在Android开发中,会遇到对View的不同区域设置不同的响应事件!当然,我们可以通过布局上的技巧来解决这个问题,而且这也是适用范围比较广的处理方法;还可以通过View的某些属性来解决这个问题,但是往往会有所限制!比如,我们希望对下述图片的红、绿、蓝、通明区域有不同的响应事件,此时根据具体的问题,我们可以获得触碰点的颜色,然后分别做处理即可!这个方法的限制是,不同响应事件的点所在颜色取值范围比较集中!!!
可以把上图的响应事件分成四种,分别如图所示:
假设用ImageView显示图片,涉及到的具体代码如下:
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(R.drawable.background);
final Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int colorValue = bitmap.getPixel((int) event.getX(), (int) event.getY());
// red
if (colorValue == 0xff0000) {
// Something to do.
return true;
}
// green
if (colorValue == 0x00ff00) {
// Something to do.
return true;
}
// blue
if (colorValue == 0x0000ff) {
// Something to do.
return true;
}
// transparent
if (colorValue == 0x000000) {
// Something to do.
return true;
}
return false;
}
});
当图片的颜色被我们处理后,就不需要把这个事件在触碰链中传递下去,所以代码返回ture;否则需要继续在触碰链中继续传递触碰事件!
多说一句:希望对您有所帮助!=^_^=