正文  基础知识 > 程序示例 >

ImageView实现按下时变暗

Drawable drawable = imgs.get(i); drawable.setColorFilter(Color.GRAY,PorterDuff.Mode.M...

Drawable drawable = imgs.get(i);
drawable.setColorFilter(Color.GRAY,PorterDuff.Mode.MULTIPLY);
iv.setImageDrawable(drawable);
/*
* 通过setColorFilter可以实现滤镜效果。 如: final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
         //获取壁纸
 final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
 //指定滤镜颜色以及混合模式
wallpaperDrawable.setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY); 
/*注意:PorterDuff.Mode枚举值: 
 1.PorterDuff.Mode.CLEAR 所绘制不会提交到画布上。
 2.PorterDuff.Mode.SRC 显示上层绘制图片
 3.PorterDuff.Mode.DST 显示下层绘制图片
 4.PorterDuff.Mode.SRC_OVER 正常绘制显示,上下层绘制叠盖。
 5.PorterDuff.Mode.DST_OVER 上下层都显示。下层居上显示。
 6.PorterDuff.Mode.SRC_IN 取两层绘制交集。显示上层。 
 7.PorterDuff.Mode.DST_IN 取两层绘制交集。显示下层。
 8.PorterDuff.Mode.SRC_OUT 取上层绘制非交集部分。 
 9.PorterDuff.Mode.DST_OUT 取下层绘制非交集部分。 
10.PorterDuff.Mode.SRC_ATOP 取下层非交集部分与上层交集部分 
11.PorterDuff.Mode.DST_ATOP 取上层非交集部分与下层交集部分 
12.PorterDuff.Mode.XOR //变暗 
13.PorterDuff.Mode.DARKEN //调亮 
14.PorterDuff.Mode.LIGHTEN //用于颜色滤镜 
15.PorterDuff.Mode.MULTIPLY 
16.PorterDuff.Mode.SCREEN
*/