在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;否则需要继续在触碰链中继续传递触碰事件!
多说一句:希望对您有所帮助!=^_^=