注意:本篇文章是本人阅读相关文章所写下的总结,方便以后查阅,所有内容非原创,侵权删。
本篇文章内容来自于:
1.Android开发艺术探索 任玉刚
2.领略千变万化的Android Drawable (一)
目录
- LevelListDrawable
--8.1 什么是LevelListDrawable
--8.2 LevelListDrawable语法/属性
--8.3 LevelListDrawable使用案例
8. LevelListDrawable
8.1 什么是LevelListDrawable
LevelListDrawable对应于<level-list>标签,也表示一个Drawable的集合,但集合中的每个Drawable都一个等级。根据不同等级,LevelListDrawable会切换到相应的Drawable。
8.2 LevelListDrawable语法/属性
<?xml version="1.0" encoding="utf-8"?>
<level-list
xmlns:android="http://schemas.android.com/apk/res/android" >
//标签中的每个Item各表示一个Drawable,并有与之对应的等级
//而等级则是由android:maxLevel和android:minLevel所决定的,其等级范围是0-10000,最小为0,默认值,最大则为10000
<item
//android:drawable 该等级下需要展示的图片
android:drawable="@drawable/drawable_resource"
//android:maxLevel 该项所允许的最大level
android:maxLevel="integer"
//android:minLevel 该项所允许的最小level
android:minLevel="integer" />
</level-list>
8.3 LevelListDrawable使用案例
大概相似效果:

第一步:定义xml文件
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_oval"
android:maxLevel="1" />
<item
android:drawable="@drawable/shape_example"
android:maxLevel="2" />
<item android:maxLevel="3">
<shape android:shape="rectangle">
<solid android:color="#0f0" />
</shape>
</item>
</level-list>
第二步:使用
当作为view的背景时,则通过Drawable的setLevel来设置不同的等级;
ivShow.getDrawable().setLevel(3);当作为ImageView的前景时,则还可通过Imageview的setImageLevel来切换Drawable。
ivShow.setImageLevel(0);
public class MainActivity extends BaseActivity {
@BindView(R.id.btn_base64)
Button btnBase64;
@BindView(R.id.iv_show)
ImageView ivShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
ivShow.setImageResource(R.drawable.levellist_demo);
ivShow.setImageLevel(0);
}
@OnClick(R.id.btn_base64)
public void onViewClicked() {
ivShow.setImageLevel(3);
}
}