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

时间:2016-03-04 19:34:51

标签: android

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

1 个答案:

答案 0 :(得分:4)

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