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

本文详细介绍了在Android开发中如何通过布局和View属性对不同区域设置不同的响应事件,以实现精细化的交互体验。通过实例代码演示了如何通过获取触碰点的颜色信息来触发特定事件,适用于具有不同颜色区域的界面设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值