Android 不规则图形的响应事件处理

    在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;否则需要继续在触碰链中继续传递触碰事件!

    多说一句:希望对您有所帮助!=^_^=

猜你喜欢

转载自wangleyiang.iteye.com/blog/1738331
今日推荐