Android对图片Drawable实现变色示例代码
程序员文章站
2023-12-14 16:24:40
前言
本文主要给大家介绍了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开发者们的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。