Tint
来源:互联网 发布:交换机上联端口配置 编辑:程序博客网 时间:2024/05/21 22:51
Android5.0才提供Drawable.setTint方法,而Android5.0之前的则只能使用v4中的
Drawable.setTint方法了;
Drawable对象与ConstantState对象
① Drawable是一个可绘制的对象或者叫做可渲染的对象,里面保存的是可以绘制的数据,其可能是一张位图BitmapDrawable、也可能是一个图形ShapeDrawable、还可以是一个颜色ColorDrawable等等;
② 已知直接子类:BitmapDrawable/ClipDrawable/ColorDrawable……..
③ 已知间接子类:AnimationDrawable/PaintDrawable/StateListDrawable……..
④ Drawable对象主要的功能就是给canvas上面绘制图形,也可以理解为渲染canvas,这主要通过Drawable对象的draw方法来实现;
⑤ Drawable对象还可以设置给View对象作为背景,如果Drawable类对象的属性被修改了,Drawable对象可以通知关联的View对象重新绘制View对象,这是通过Drawable的invalidateSelf方法来实现的,invalidateSelf方法调用关联的Drawable.Callback的invalidateDrawable方法;
⑥ 每个Drawable对象都关联一个ConstantState类型的对象,这是为了保存所有Drawable类对象的一些恒定不变的属性,例如:如果从同一个resourse中创建的Drawable类对象,为了节约内存,它们会共享同一个ConstantState类型的对象,一个ColorDrawable 类对象,它会关联一个ColorState 类对象,color的颜色值是保存在 ColorState类对象中的。如果修改 ColorDrawable的颜色值,会修改到 ColorState的值,会导致和 ColorState关联的所有的 ColorDrawable的颜色都改变。在修改 ColorDrawable的属性的时候,需要先调用 public Drawable mutate()方法,让 Drawable复制一个新的 ConstantState对象关联,mutate就是为了新建一个ConstantState类型的对象;
给图片修改颜色
DrawableCompat.setTintList(Drawable , ColorStateList);
ColorStateList对象可以通过ColorStateList.valueOf(Color.parseColor("#颜色代码")或
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/red" android:state_focused="true" />
<item android:color="@color/gray" />
</selector>
getResources().getColorStateList(R.color.edittext_tint_colors)来生成
参考资料
Drawable 着色的后向兼容方案
- tint
- Tint
- android:tint
- Android Tint
- TBuf转换为TInt
- Tint UIButton and UIBarButtonItem
- 关于Tint Color
- ImageView之tint属性
- Android ColorFilter and Tint
- Bitmap+android:tint
- android tint selector 使用
- Android-Tint变色
- Android 着色器 Tint
- ImageView的tint属性
- Android中Tint使用
- Android Tint使用
- Drawable的Tint变色
- Android-Tint使用实践
- hdu ---2033做题笔记(c++)
- jQuery全屏滚动插件fullPage.js
- RSA加密算法心得
- 这部电影是KOOCAN在电影院看的最沉重的一次
- 解决CSDN无法传资源
- Tint
- java的接口可以继承接口吗?
- javaweb 过滤
- db2audit 审计 (适用于db2 9.7)
- 学习记录2016年10月13日 16:54:07
- unity5 assetbundle 发布资源平台的大坑。程序发布成exe后执行与编译器内不同的问题解决。
- fresco(最牛逼的图片缓存加载框架),包括xutil的使用
- Snackbar
- 虚幻4 贴花