资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

怎么在Android中使用Drawable改变图片的颜色

今天就跟大家聊聊有关怎么在Android中使用Drawable改变图片的颜色,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、宜兴网络推广、微信小程序、宜兴网络营销、宜兴企业策划、宜兴品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供宜兴建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

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

 
 
   
   
   

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中使用Drawable改变图片的颜色有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文题目:怎么在Android中使用Drawable改变图片的颜色
网站URL:http://cdkjz.cn/article/gjpdjd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220