Android LayerDrawable

LayerDrawable 层图形对象,包含一个 Drawable 数组,然后按照数组对应的顺序来绘制它们

索引值最大的 Drawable 会被绘制在最上层

虽然有些 Drawable 会有交叉或者重叠的区域,但它们位于不同的层,所以并不会相互影响

LayerDrawable<layer-list> 作为根节点

属性 说明
android:drawable 引用的位图资源,如果为空徐璈有一个 Drawable 类型的子节点
android:left 层相对于容器的左边距
android:right 层相对于容器的右边距
android:top 层相对于容器的上边距
android:bottom 层相对于容器的下边距
android:id 层的 id

范例


  1. 创建一个 空的 Android 项目 cn.twle.android.LayerDrawable

  2. 创建一个 shapeDrawableClipDrawable

    res/drawable/layerlist_one.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@android:id/background">
            <shape android:shape="rectangle">
                <solid android:color="#C2C2C1" />
                <corners android:radius="50dp" />
            </shape>
        </item>
        <item android:id="@android:id/progress">
            <clip>
                <shape android:shape="rectangle">
                    <solid android:color="#BCDA73" />
                    <corners android:radius="50dp" />
                </shape>
            </clip>
        </item>
    </layer-list>
    

    res/drawable/shape_slider.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
    
        <solid android:color="#2C96ED"/>
        <size android:height="30dp" android:width="30dp"/>
    </shape>
    
  3. 修改 activity_main.xml 添加一个 Seekbar

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="16dp" >
    
        <SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
            android:indeterminateOnly="false"
            android:maxHeight="10dp"
            android:minHeight="5dp"
            android:progressDrawable="@drawable/layerlist_one"
            android:thumb="@drawable/shape_slider" />
    
    </LinearLayout>
    

范例 2

既然 LayerDrawable 层图形对象,我们还可以弄个 层叠图片 的效果

  1. 创建一个 空的 Android 项目 cn.twle.android.LayerDrawableImage

  2. 下载 /static/i/meimei.jpg 并放到 res/drawable 目录

  3. 创建一个层叠图片的 LayerDrawable

    res/drawable/layerlist_two.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <bitmap
                android:gravity="center"
                android:src="@drawable/meimei" />
        </item>
        <item
            android:left="25dp"
            android:top="25dp">
            <bitmap
                android:gravity="center"
                android:src="@drawable/meimei" />
        </item>
        <item
            android:left="50dp"
            android:top="50dp">
            <bitmap
                android:gravity="center"
                android:src="@drawable/meimei" />
        </item>
    </layer-list>
    
  4. 修改 activity_main.xml 添加一个 ImageView

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <ImageView 
            android:id="@+id/img_show"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="center"
            android:src="@drawable/layerlist_two" />
    
    </LinearLayout>
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.