繁体   English   中英

Android-如何检测自定义形状按钮的单击区域的透明度

[英]Android - How to detect transparency of the clicked area of custom shaped buttons

我有一些不规则形状的按钮,创建为ImageButtons。 ImageButton的“ android:src”属性是具有透明背景的.PNG文件。 这些ImageButton的父级布局具有自定义背景图片,该图片由“ android:background”属性定义。 因此,活动的背景不是透明的,或者仅仅是黑色的。

我的问题是; 如何检测单击按钮是在源图像的透明区域还是在源图像的可见部分?

我尝试使用onTouchListener来获取事件的坐标并根据像素的颜色做出决定; 但是由于背景是彩色的,所以我讲不清楚。

很感谢任何形式的帮助。 提前致谢!

嗨,兄弟,我认为此链接可能会对您有所帮助。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/view/View.java#View.dispatchTouchEvent%28android.view.MotionEvent%29

如果点不在所需区域中,则需要在自定义按钮中覆盖此方法以返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM