Android Imageview 图片置灰,图片特殊节日去真彩色

ImageView

ImageView是Android中的一个图片显示控件,用来加载网络或者本地图片资源。好看的图片可以让应用更被用户接收,如果图片作为应用的装饰,已成为主流,但不是所有的图片显示都符合要求,比如一些特殊时间,特别靓丽的色彩不符合当下假日要求,这个时候如果能让图片变成灰色,这样用助于达到效果。

由于图片基本都是人工在处理,一张图可以直接换资源,如果是千人千面,几十万或者上百张资源根本来不及处理。这时,如果我们能通过色彩过滤,对一些色彩进行置灰,这样在显示上依旧可以达到效果。

ImageView提供了setColorFilter(ColorMatrixColorFilter)方法,通过该方法,对颜色进行过滤。

public ColorMatrixColorFilter(@NonNull ColorMatrix matrix)又是一个Bean类,真正处理色彩的是ColorMatrix 

ColorMatrix :

4x5矩阵,用于变换位图的颜色和alpha分量。矩阵可以作为单个数组传递,并按如下方式处理

setSaturation(float sat)方法就是对颜色进行处理,针对的是R/G/B三原色进行混淆

sat:取值是0到1,值越大,色彩饱和越量,为1,是图片的原色,越小,越灰

Android中的color基本有三原色,RGB组成,

000000是黑色,

FFFFFF:白色

源码如下:

public void setSaturation(float sat) {
    reset();
    float[] m = mArray;

    final float invSat = 1 - sat;
    final float R = 0.213f * invSat;
    final float G = 0.715f * invSat;
    final float B = 0.072f * invSat;

    m[0] = R + sat; m[1] = G;       m[2] = B;
    m[5] = R;       m[6] = G + sat; m[7] = B;
    m[10] = R;      m[11] = G;      m[12] = B + sat;
}

测试代码:

         ColorMatrix colorMatrix = new ColorMatrix();
           //0-1
          colorMatrix.setSaturation(progress * 1.0f / 100.0f);
          ColorMatrixColorFilter colorFilter = new     
           ColorMatrixColorFilter(colorMatrix);
           imageView.setColorFilter(colorFilter);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值