本文将带你了解Android应用开发Android ImageView点击变暗效果,希望本文对大家学Android有所帮助。
<
自定义ImageView;
在ImageView中setPressed(boolean pressed)方法返回ImageView是否被选中的状态;当pressed为ture时,控件被选中;当pressed为false时,控件未被选中;自定义ImageView同过判断pressed的状态改变ImageView图片;
** * Created by minghao_zl on 14-9-17. * 公共的蒙版ImageView(点击变暗效果) */ public class MaskableImageView extends ImageView{ private boolean touchEffect = true; public final float[] BG_PRESSED = new float[] { 1, 0, 0, 0, -50, 0, 1, 0, 0, -50, 0, 0, 1, 0, -50, 0, 0, 0, 1, 0 }; public final float[] BG_NOT_PRESSED = new float[] { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 }; public MaskableImageView(Context context) { super(context); } public MaskableImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MaskableImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void setPressed(boolean pressed) { updateView(pressed); super.setPressed(pressed); } /** * 根据是否按下去来刷新bg和src * created by minghao.zl at 2014-09-18 * @param pressed */ private void updateView(boolean pressed){ //如果没有点击效果 if( !touchEffect ){ return; }//end if if( pressed ){//点击 /** * 通过设置滤镜来改变图片亮度@minghao */ this.setDrawingCacheEnabled(true); this.setColorFilter( new ColorMatrixColorFilter(BG_PRESSED) ) ; this.getDrawable().setColorFilter( new ColorMatrixColorFilter(BG_PRESSED) ); }else{//未点击 this.setColorFilter( new ColorMatrixColorFilter(BG_NOT_PRESSED) ) ; this.getDrawable().setColorFilter( new ColorMatrixColorFilter(BG_NOT_PRESSED)); } } }
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!