layerlist
1.多张图片可以叠加在一起做为某个ImageView的背景。
可以在xml或代码中实现:
xml中实现:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/ic_launcher"/>
<item
android:drawable="@mipmap/ic_launcher"
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
/>
<!--
android:left
android:top
android:right
android:bottom
这四个属性表示四个方向上的padding
-->
</layer-list>
效果如下:
在代码中实现:
private void practiceLayerList() {
ImageView img = (ImageView) findViewById(R.id.layer_list_img);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
Drawable[] drawables = new Drawable[3];
drawables[0] = new PaintDrawable(Color.BLACK);
drawables[1] = new PaintDrawable(Color.GREEN);
drawables[2] = new BitmapDrawable(getResources(), bm);
LayerDrawable layerDrawable = new LayerDrawable(drawables);
layerDrawable.setLayerInset(1, 20, 20, 20, 20);
layerDrawable.setLayerInset(2, 40, 40, 40, 40);
/*
* layerlist可以在xml中实现,也可以在代码中设置
* 代码中使用layerDrawable
* layerDrawble.setLayerInset()
* 有五个int类型的参数,第一个表示drawable数组的下标
* 剩下四个分表表示left,top,right,bottom方向向内的padding
* */
img.setBackground(layerDrawable);
}
关于selector的记录:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<stroke android:width="1dp"
android:color="@color/colorAccent"/>
<solid
android:color="@color/colorPrimary"/>
<gradient android:startColor="@color/colorAccent"
android:centerColor="@color/colorPrimaryDark"
android:endColor="@color/colorPrimary"
android:angle="180"
/>
<!--
android:angle
0表示从左到右
90表示从下到上
180表示从右到左
-->
<corners android:radius="10dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<stroke android:width="1dp"
android:color="@color/colorPrimary"/>
<solid android:color="@color/colorAccent"/>
<corners android:radius="10dp"/>
</shape>
</item>
</selector>
实现效果如下: