前言:
不管这事啥东西,能解决问题就是好东西
DrawableCompat 根据名称可以看出是Drawable的兼容类 ,可以干一些事。
平时在工作中需要通过多张图片显示不同的状态,现在用这个玩意就可以只用一张图片显示多个状态啦,想想还有点小鸡动。
正文:
先看效果:可以一张图片实现多种状态显示此处展示了按下和默认时候的颜色
实现:
先看代码吧
<span style="font-size:14px;">public class ActivityA extends Activity {
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
imageView= (ImageView) findViewById(R.id.image);
imageView.setBackgroundDrawable(setTintDrawable(getResources().getDrawable(R.mipmap.ic_account_balance_black_24dp).mutate(), getResources().getColorStateList(R.color.edittext_tint_colors)));
}
//具体操作drawable
public static Drawable setTintDrawable(Drawable drawable,ColorStateList colorStateList){
Drawable drawable1= DrawableCompat.wrap(drawable);
DrawableCompat.setTintList(drawable1,colorStateList);
return drawable1;
}
}</span>
edittext_tint_colors.xml:
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/red" android:state_pressed="true" />
<item android:color="@color/touming" />
</selector> </span>
注意: getResources().getDrawable(R.mipmap.ic_account_balance_black_24dp).mutate() 方法, 主要是为了防止一个屏幕里同一个图片使用了多次,在操作其中一个drawable的时候会影响到其他的相同的Drawable资源文件的属性
总结:
我就先不管到底是个啥了,先动手尝试做做效果看如何,最后再去看详情代码,这样学着才快嘛~~~~~~~~~~~~~~~~~~~~~~~~~~~
效果就是那样了,也不需要啥demo,就那么几行代码的事,so easy。实践才是硬道理。