ColorMatrixColorFilter颜色过滤(离线用户的灰色头像处理)

Android的图片资源默认是静态的,单实例;如果两个IM好友的头像一样,最简单的都是用的软件自带头像,有一个在线,一个离线,直接改变头像的灰度,则两个用户的头像都会变灰或者在线,答案是:Drawable.mutate()。 

Java代码 
Drawable mDrawable = context.getResources().getDrawable(R.drawable.face_icon);   
//Make this drawable mutable.
//A mutable drawable is guaranteed to not share its state with any other drawable.
mDrawable.mutate();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter cf = new ColorMatrixColorFilter(cm);
mDrawable.setColorFilter(cf);
 

转载于:https://www.cnblogs.com/shanzei/archive/2012/03/24/2415878.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要改变 Android 中 Bitmap 的颜色,可以使用 ColorMatrix 来实现。ColorMatrix 是一个 4x5 的矩阵,其中前 4x4 的部分是用于控制颜色转换的矩阵,而最后一列用于颜色平移。 以下是一个示例代码,演示了如何将 Bitmap 的颜色从蓝色变为红色: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); int width = bitmap.getWidth(); int height = bitmap.getHeight(); // 创建一个色彩矩阵 ColorMatrix colorMatrix = new ColorMatrix(new float[]{ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 }); // 创建一个颜色过滤ColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix); // 创建一个画笔,并将颜色过滤器设置给画笔 Paint paint = new Paint(); paint.setColorFilter(colorFilter); // 创建一个新的 Bitmap,将原始 Bitmap 绘制到新的 Bitmap 上,并使用画笔进行颜色过滤 Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(newBitmap); canvas.drawBitmap(bitmap, 0, 0, paint); ``` 在上述代码中,我们首先创建了一个 ColorMatrix,将红色和蓝色的通道进行了交换,然后使用这个 ColorMatrix 创建了一个 ColorFilter。接下来,我们使用这个 ColorFilter 创建了一个画笔,并将这个画笔设置给 Canvas 对象,最后在 Canvas 上绘制了原始 Bitmap,这样就得到了一个新的 Bitmap,它的颜色已经从蓝色变为红色了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值