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