继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android -对图片Drawable进行变色

jmesSehng
关注TA
已关注
手记 149
粉丝 424
获赞 5663
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;
  }
}
打开App,阅读手记
11人推荐
发表评论
随时随地看视频慕课网APP

热门评论

最近发现的一个比较实用的功能,和大家分享

查看全部评论