我使用的是Android Studio,并且这张图片的背景是透明的。每当我单击它时,它将带我进入另一个活动。但是,即使单击图像的透明部分,它也会带我进入另一个活动。
是否可以使非透明部分可单击(或可触摸)而使透明部分不可单击?

最佳答案

是的,这是可能的,但是它比添加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
     }
 }

10-07 19:15
查看更多