本節(jié)引言:
1.LayerDrawable
相關(guān)屬性如下:
使用示例: 運(yùn)行效果圖: 代碼實(shí)現(xiàn): 非常簡單,結(jié)合前面學(xué)習(xí)的shapeDrawable和ClipDrawable: layerList_one.xml <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas./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> 然后在布局文件中添加一個Seekbar,內(nèi)容如下: <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" /> 臥槽,沒了?對的,就是這么點(diǎn)東西~說了是層圖形對象,我們還可以弄個層疊圖片的效果: 運(yùn)行效果圖: 實(shí)現(xiàn)代碼: 層疊圖片的layerlist_two.xml: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas./apk/res/android"> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_bg_ciwei" /> </item> <item android:left="25dp" android:top="25dp"> <bitmap android:gravity="center" android:src="@mipmap/ic_bg_ciwei" /> </item> <item android:left="50dp" android:top="50dp"> <bitmap android:gravity="center" android:src="@mipmap/ic_bg_ciwei" /> </item> </layer-list> 然后在activity_main.xml里加個ImageView,內(nèi)容如下: <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/layerlist_two"/> 簡單好用,還等什么,快快應(yīng)用到你的項目中吧~ 2.TransitionDrawable
使用示例: 運(yùn)行效果圖: 實(shí)現(xiàn)代碼: 在res/drawable創(chuàng)建一個TransitionDrawable的xml文件 <?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas./apk/res/android" > <item android:drawable="@mipmap/ic_bg_meizi1"/> <item android:drawable="@mipmap/ic_bg_meizi2"/> </transition> 然后布局文件里加個ImageView,然后把src設(shè)置成上面的這個drawable 然后MainActivity.java內(nèi)容如下: public class MainActivity extends AppCompatActivity { private ImageView img_show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img_show = (ImageView) findViewById(R.id.img_show); TransitionDrawable td = (TransitionDrawable) img_show.getDrawable(); td.startTransition(3000); //你可以可以反過來播放,使用reverseTransition即可~ //td.reverseTransition(3000); } } 另外,如果你想實(shí)現(xiàn):多張圖片循環(huán)的淡入淡出的效果 可參考:Android Drawable Resource學(xué)習(xí)(七)、TransitionDrawable中的示例 很簡單,核心原理就是:handler定時修改Transition中兩個圖片! 3.LevelListDrawable
item可供設(shè)置的屬性如下:
使用示例: 運(yùn)行效果圖: 代碼實(shí)現(xiàn): 通過shapeDrawable畫圓,一式五份,改下寬高即可: shape_cir1.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas./apk/res/android" android:shape="oval"> <solid android:color="#2C96ED"/> <size android:height="20dp" android:width="20dp"/> </shape> 接著到LevelListDrawable,這里我們設(shè)置五層: level_cir.xml: <?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas./apk/res/android" > <item android:drawable="@drawable/shape_cir1" android:maxLevel="2000"/> <item android:drawable="@drawable/shape_cir2" android:maxLevel="4000"/> <item android:drawable="@drawable/shape_cir3" android:maxLevel="6000"/> <item android:drawable="@drawable/shape_cir4" android:maxLevel="8000"/> <item android:drawable="@drawable/shape_cir5" android:maxLevel="10000"/> </level-list> 最后MainActivity寫如下代碼: public class MainActivity extends AppCompatActivity { private ImageView img_show; private LevelListDrawable ld; private Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0x123) { if (ld.getLevel() > 10000) ld.setLevel(0); img_show.setImageLevel(ld.getLevel() + 2000); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img_show = (ImageView) findViewById(R.id.img_show); ld = (LevelListDrawable) img_show.getDrawable(); img_show.setImageLevel(0); new Timer().schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0x123); } }, 0, 100); } } 也很簡單,一個Timer定時器,handler修改level值~ 4.StateListDrawable
可供設(shè)置的屬性如下:
使用示例: 那就來寫個簡單的圓角按鈕吧! 運(yùn)行效果圖: 代碼實(shí)現(xiàn): 那就先通過shapeDrawable來畫兩個圓角矩形,只是顏色不一樣而已: shape_btn_normal.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas./apk/res/android" android:shape="rectangle"> <solid android:color="#DD788A"/> <corners android:radius="5dp"/> <padding android:top="2dp" android:bottom="2dp"/> </shape> 接著我們來寫個selctor:selctor_btn.xml: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas./apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/shape_btn_pressed"/> <item android:drawable="@drawable/shape_btn_normal"/> </selector> 然后按鈕設(shè)置android:background="@drawable/selctor_btn"就可以了~ 你可以根據(jù)自己需求改成矩形或者橢圓,圓形等! 本節(jié)小結(jié):
|
|