layer-list:兩張圖片和成一張圖片
state-list:狀態圖,如button按鈕的點擊,點擊前與點擊時的狀態顏色不一樣。
level-list:打分圖片
shape:繪制形狀圖片
布局代碼:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:orientation="vertical"> 5 6 <ImageView 7 android:id="@+id/iv" 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content" 10 android:src="@drawable/layerlist"/> 11 12 <Button 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:onClick="onClick" 16 android:text=" 下 一 張" 17 android:background="@drawable/shape"/> 18 </LinearLayout>
MainActivity:
1 package com.android.hzy.drawable; 2 import android.app.Activity; 3 import android.graphics.drawable.LayerDrawable; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.ImageView; 7 8 public class MainActivity extends Activity { 9 10 private ImageView iv; 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 16 iv = (ImageView) findViewById(R.id.iv); 17 } 18 19 public void onClick(View v){ 20 LayerDrawable layerDrawable = (LayerDrawable) getResources().getDrawable(R.drawable.layerlist); 21 // 替換圖片 22 layerDrawable.setDrawableByLayerId(R.id.user, getResources().getDrawable(R.drawable.ic_launcher)); 23 // 將圖片復制給imageview 24 iv.setImageDrawable(layerDrawable); 25 } 26 }
res/drawable下創建與之對應的xml
layerlist.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 3 4 <item android:drawable="@drawable/faceback"/> 5 <item 6 android:id="@+id/user" 7 android:bottom="22dp" 8 android:drawable="@drawable/user" 9 android:left="18dp" 10 android:right="18dp" 11 android:top="68dp"/> 12 13 </layer-list>
statelist.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android" > 3 <!-- 按下采用的是什么圖片 --> 4 <item android:state_pressed="true" android:drawable="@drawable/bg_selected"></item> 5 <!-- 默認狀態就是個正常狀態,因此默認狀態的條目要放在最后寫 --> 6 <item android:drawable="@drawable/bg_normal"></item> 7 8 </selector>
levellist.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <level-list xmlns:android="http://schemas.android.com/apk/res/android" > 3 4 <item 5 android:drawable="@drawable/faceback" 6 android:maxLevel="10" 7 android:minLevel="0"/> 8 <item 9 android:drawable="@drawable/faceback" 10 android:maxLevel="20" 11 android:minLevel="11"/> 12 13 </level-list>
shape.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- 3 android:shape=["rectangle" | "oval" | "line" | "ring"]:表示圖形的形狀 4 corners :代表圓角 5 gradient : 漸變色 6 padding:內邊距 7 size:圖片的大小 8 solid:內填充色 和 gradient 只能使用一個 9 stroke:邊線 (虛線圖片) 10 --> 11 <shape 12 xmlns:android="http://schemas.android.com/apk/res/android" 13 android:shape="rectangle"> 14 <corners 15 android:radius="3dp" /> 16 <gradient 17 android:centerColor="#D0F4F9" 18 android:endColor="#4BED23" 19 android:startColor="#5FF2FA" /> 20 <padding 21 android:left="2dp" 22 android:top="2dp" 23 android:right="2dp" 24 android:bottom="2dp" /> 25 26 <stroke 27 android:width="1dp" 28 android:color="#f00" 29 android:dashWidth="10dp" 30 android:dashGap="2dp" /> 31 </shape>