使用 SetColorFilter 神奇地改变图片的颜色

关键代码如下:

colors.xml文件中定义一个颜色值:

<color name="permission_dialog_img_color">#000000</color>

代码中调用:

int mFilterColor = ContextCompat.getColor(mContext,R.color.permission_dialog_img_color);
int blue = Color.blue(mFilterColor);
int green = Color.green(mFilterColor);
int red = Color.red(mFilterColor);
float[] cm = new float[]{
    1, 0, 0, 0, red,// 红色值
    0, 1, 0, 0, green,// 绿色值
    0, 0, 1, 0, blue,// 蓝色值
    0, 0, 0, 1, 1 // 透明度
};
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(cm);

((ImageView)itemView.findViewById(R.id.item_img)).setColorFilter(filter);//设置图标的颜色

 参考资料

一行代码搞定漂亮的Android6.0权限申请界面

Android-使用 SetColorFilter 神奇地改变图片的颜色

  • 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、付费专栏及课程。

余额充值