我使用的是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
}
}