答案 0 :(得分:1)
你可以抓住Bitmap
的{{1}}表示,然后测试x / y像素的alpha值。
获取按钮的位图:
Button
我建议只执行一次,并保存结果,这样每次触摸按钮时都不会创建新的位图。
然后你覆盖Button的onTouchEvent,这样你就拥有了用户点击的本地x / y。如果该点中的alpha为0,则表示您具有不可点击的区域。它不像Bitmap buttonBmp;
button.setDrawingCacheEnabled(true);
buttonBmp = Bitmap.createBitmap(button.getDrawingCache());
button.setDrawingCacheEnabled(false);
那么简单,但应该可以完成这项工作。
这样你可以使用任意形状,而不仅仅是甜甜圈。颜色,纹理等等。
答案 1 :(得分:0)
我对此并不完全确定,但我认为这个方案可行。在布局中创建图像视图以显示图片并通过onTouchEvent使其可单击。这样您就可以获得点击的坐标。检查以确保点击位于内半径和外半径内,如果是,则执行给定的响应。
以下是一些需要的计算:
圈子中心 - 假设中心是图像的最底部,这看起来像这样(不一定是精确的方法)
centerX = img.getX() + img.getWidth()/2;
centerY = img.getY() + img.getHeight()/2;
请记住,屏幕坐标从上到下,从左到右。
找到远离点击发生中心的距离
Dx = click.getX() - centerX;
Dy = click.getY() - centerY;
D = Math.sqrt(Dx^2 + Dy^2);
然后你需要的是检查距离是否在半径范围内(不知道如何在这里得到精确的半径,可能只需要猜测和检查。另一种选择可能是半圆的顶部是顶部图片然后最大高度为外半径。)
if(D<=outerR && D>=innerR)
respond();