现在的位置: 首页 > 综合 > 正文

Android开发:ImageView滤镜效果

2014年02月23日 ⁄ 综合 ⁄ 共 1589字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.