ITPub博客

首页 > IT职业 > IT生活 > Android -对图片Drawable进行变色

Android -对图片Drawable进行变色

IT生活 作者:blankrabbit 时间:2021-09-09 09:05:40 0 删除 编辑
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
<!-- pressed --><!-- focused --><!-- default -->
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;
  }
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/212/viewspace-2808018/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-07-23

  • 博文量
    0
  • 访问量
    647