android - android中的圆形按钮..避免按下 "outside"按钮?

标签 android

我已经创建/试图通过使用 ImageButton“小部件”为 android 创建一个圆形按钮。 但是由于这种类型的按钮被视为正方形,而我的 png 图像也被视为具有透明背景的正方形,那么我如何避免用户无法按下圆形按钮之外的按钮?..因为现在..他们可以按下按钮的“角落”,这仍然会触发点击事件.. 是否有任何特殊的映射层可以在 photoshop 中完成或以任何方式更改图像按钮的半径以使其适合我图像的“圆度”..或任何想法?

提前致谢!..抱歉英语不好..

最佳答案

试试勾股定理和onTouch,简单易行的方法。

public boolean inCircle(MotionEvent e, int radius, int x, int y) {
    int dx = e.x - x;
    int dy = e.y - y;
    double d = Math.sqrt((dx * dx) + (dy * dy));
    if(d < radius)
        return true;
    return false;
}

x,y是圆的位置,radius是半径,e是你的TouchEvent。

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
    if(arg1.getAction() == MotionEvent.ACTION_DOWN){
           if(inCircle(arg1, radius, xCircle, yCircle){
                  //do whatever you wanna do here
                  }
            }
    return false;
}

关于android - android中的圆形按钮..避免按下 "outside"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049868/

相关文章:

android - 无法从 Android Studio 中的 Firebase 实时数据库中检索数据

android - java.lang.IllegalArgumentException : Scrapped or attached views may not be recycled. isScrap:false isAttached:true 向下滚动时

具有多个服务的 Android BLE Gatt 服务器 - onCharacteristicWriteRequest() 没有用于句柄的字符

android - 使用 Robolectric 3.0+ 测试抽屉导航项目

android - @font-face 段落标签渲染问题,Chrome Android 4

Android 无模式弹出窗口

android - 是否可以在 Android Oreo 上更改通知点的颜色

android - CardView 点击状态不工作

java - 如何针对 Android 模拟器运行命令?

java - Android解析日期问题