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