使图像的透明部分不可点击

问题描述:

我使用Android工作室,并且我拥有透明背景的图像。每当我点击它,它会带我到另一个活动。但即使当我点击图像的透明部分时,它也会将我带到其他Activity。 是否有可能使非透明部分可点击(或可触摸)并且透明部分不可点击?使图像的透明部分不可点击

+0

请显示您所指的图片和/或XML。你有一个自定义的按钮背景? –

+0

你有没有想到这一点,并有一个职位的答案?如果其他人没有足够的帮助你接受他们,你可以发布你自己的答案,但是接受答案是很好的,所以有同样问题的其他人会发现它 –

+1

是的,我通常接受答案,就像我在这里忘了它。你收到的答案确实很好。 ty:D – Iluvpresident

是的,这是可能的,但它变得比添加OnClickListener困难得多。

诀窍是使用Touch监听器而不是点击,然后在DOWN或UP事件中找到位置,然后使用一些简单的数学计算出它是否是透明区域(如果设计是简单的),或者做一些更复杂的东西来找出中心的像素值。

new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     If (event.getAction() == MotionEvent.ACTION_DOWN) { 
      final int x = (int) event.getX(); 
      final int y = (int) event.getY(); 

      //now map the coords we got to the 
      //bitmap (because of scaling) 
      ImageView imageView = ((ImageView)v); 
      Bitmap bitmap =((BitmapDrawable)imageView.getDrawable()).getBitmap(); 
      int pixel = bitmap.getPixel(x,y); 

      //now check alpha for transparency 
      int alpha = Color.alpha(pixel); 
      If (alpha != 0) { 
        //do whatever you would have done for your click event here 
      } 
     } 
     return true; //we've handled the event 
    } 
}