本文将带你了解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频道!