欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android对图片Drawable实现变色示例代码

程序员文章站 2023-12-04 10:12:58
前言 本文主要给大家介绍了android中图片drawablecompat利用settint()对图片drawable进行变色的相关内容,分享出来供大家参考学习,下面话不...

前言

本文主要给大家介绍了android中图片drawablecompat利用settint()对图片drawable进行变色的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

1.利用color资源对drawable变色

drawable对象的来源不限制,可以是从资源getresource().getdrawable(int resourceid)也可以是其他的方式得到的drawable

drawable wrappeddrawable = drawablecompat.wrap(drawable);
drawablecompat.settint(wrappeddrawable, color);

2.采用colorstatelist来改变drawable

drawable wrappeddrawable = drawablecompat.wrap(drawable);
drawablecompat.settintlist(wrappeddrawable, colors);

3.介绍一下colorstatelist

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
 <item android:state_pressed="true" 
   android:color="#ffff0000"/> <!-- pressed --> 
 <item android:state_focused="true" 
   android:color="#ff0000ff"/> <!-- focused --> 
 <item android:color="#ff000000"/> <!-- default --> 
</selector> 

java代码(用于改变按钮的字体颜色)

button btn=(button)findviewbyid(r.id.btn); 
resources resource=(resources)getbasecontext().getresources(); 
colorstatelist csl=(colorstatelist)resource.getcolorstatelist(r.color.button_text); 
if(csl!=null){ 
  btn.settextcolor(color_state_list);//设置按钮文字颜色 
} 

4.安利一个朋友封装的工具类

public class drawabletintutil {

 /**
 * drawable 颜色转化类
 *
 * @param drawable 
 * @param color资源
 * @return 改变颜色后的drawable
 */
 public static drawable tintdrawable(@nonnull drawable drawable, int color) {
 drawable wrappeddrawable = drawablecompat.wrap(drawable);
 drawablecompat.settint(wrappeddrawable, color);
 return wrappeddrawable;
 }

 /**
 * drawable 颜色转化类
 *
 * @param drawable 源drawable
 * @param colorstatelist
 * @return 改变颜色后的drawable
 */
 public static drawable tintlistdrawable(@nonnull drawable drawable, colorstatelist colors) {
 drawable wrappeddrawable = drawablecompat.wrap(drawable);
 drawablecompat.settintlist(wrappeddrawable, colors);
 return wrappeddrawable;
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位android开发者们的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。