[英]Android - How to detect transparency of the clicked area of custom shaped buttons
我有一些不规则形状的按钮,创建为ImageButtons。 ImageButton的“ android:src”属性是具有透明背景的.PNG文件。 这些ImageButton的父级布局具有自定义背景图片,该图片由“ android:background”属性定义。 因此,活动的背景不是透明的,或者仅仅是黑色的。
我的问题是; 如何检测单击按钮是在源图像的透明区域还是在源图像的可见部分?
我尝试使用onTouchListener来获取事件的坐标并根据像素的颜色做出决定; 但是由于背景是彩色的,所以我讲不清楚。
很感谢任何形式的帮助。 提前致谢!
嗨,兄弟,我认为此链接可能会对您有所帮助。
如果点不在所需区域中,则需要在自定义按钮中覆盖此方法以返回false。 我建议您这样处理:
public static class MyButton extends ImageButton {
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int iX = (int) event.getX();
int iY = (int) event.getY();
// TODO Or use a more sophisticated, pixel value-based condition
if (!(iX >= 0 & iY >= 0 & iX < TheBitmap.getWidth() & iY < TheBitmap.getHeight())) {
return false;
}
return super.dispatchTouchEvent(event)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.