Android开发:ImageView滤镜效果

本文介绍了如何在Android开发中为ImageView添加点击滤镜效果,特别是用于gridview表格控件中。当点击gridview中的ImageView时,会使其变暗,而TextView保持不变。实现这一效果的方法是在adapter中设置图片的ColorFilter属性,利用ColorMatrixColorFilter实现灰度效果。在MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP事件中分别改变滤镜程度。同时,提供了通过setColorFilter方法设置滤镜的另一种方式,并在ACTION_UP事件中清除滤镜效果,确保只有点击时存在滤镜。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


ImageView滤镜效果常见的应用情形:

表格空间中,单个表格内容)

1、gridview表格控件,每个表格中使用自定义内容(比如textview+imageview)取消gridview点击黄色背景效果,实现点击每个表格imageview变暗,而textveiw不变的点击效果

解决方法:在adapter对gridview加载数据的时候,对imageview添加点击事件,点击事件中添加imageview的滤镜效果

{用设置图片对象的ColorFilter属性,把ColorMatrixColorFilter设置灰度通道,传递到ColorFilter属性中


重视两点:1 图片滤镜结果,只是在图层上方 加了一层结果,不是对图片的实际批改


              2 若是对单个图片加滤镜结果后,其他处所应用到这个图片也会变成带滤镜结果。

}

示例代码如下:

1、adapter 中getview方法中添加代码如下:

holder.mFeatureImage.setImageResource(id);
//设置图片点击滤镜效果
holder.mFeatureImage.setOnTouchListener(mOnTouchListener);

2、定义对应的点击事件效果,代码如下

private OnTouchListener mOnTouchListener = new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

changeLight((ImageView)v ,-80);

break;

case MotionEvent.ACTION_MOVE:

changeLight((ImageView)v ,0);

break;

case MotionEvent.ACTION_UP:

changeLight((ImageView)v ,0);

break;

default:

break;

}

return true;

}

};

函数:

private void changeLight(ImageView imageview, int brightness) {
    ColorMatrix matrix = new ColorMatrix();
    matrix.set(new float[] { 1, 0, 0, 0, brightness, 0, 1, 0, 0,
            brightness, 0, 0, 1, 0, brightness, 0, 0, 0, 1, 0 });
    imageview.setColorFilter(new ColorMatrixColorFilter(matrix));

}

方法二:通过setColorFilter 实现滤镜效果(参数含义,参考http://blog.sina.com.cn/s/blog_5da93c8f01012pkj.html


Drawable drawable = imgs.get(i);

drawable.setColorFilter(Color.GRAY,PorterDuff.Mode.MULTIPLY);//注意是对图片设置滤镜,而不是控件

iv.setImageDrawable(drawable);

在ontouchlistener 中,抬起状态去掉滤镜效果即可

drawable.clearColorFilter();

参考其它作者内容:

http://my.eoe.cn/wgblwss/archive/15797.html

http://my.oschina.net/blackylin/blog/144342

http://www.byywee.com/page/M0/S746/746283.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值