我想将这个复杂的控件移植到我的 Android XML 布局中:
我需要按钮(心脏,云,...)和中央旋钮作为 ImageButtons,所以它们应该是单独的对象并定位在准确的位置。
问题是如何布局如此复杂的按钮和背景,以便在具有不同分辨率的多个设备上正确显示。
我想将这个复杂的控件移植到我的 Android XML 布局中:
我需要按钮(心脏,云,...)和中央旋钮作为 ImageButtons,所以它们应该是单独的对象并定位在准确的位置。
问题是如何布局如此复杂的按钮和背景,以便在具有不同分辨率的多个设备上正确显示。
如果您被允许动态实现它,这里有一些提示:
创建单独的图像(背景)
半径
放置按钮:
命中测试
回转
您可能必须拦截 onTouchEvent() 并处理原始事件。这样您就可以知道用户手指在图片上的位置。
如果您可以容忍圆形图标下方的方形按钮,则更简单的解决方案是使用RelativeLayout。(3 种状态,正常-选中-按下。)实际上,您不需要按钮,您只需让视图可点击即可。
我不确定您希望用户对中央旋钮做什么:按下它,用两个或三个手指转动等。原则上,您可能有一个方形视图,其角被不可点击的透明方形视图覆盖(或者它们应该是可点击的?想法是旋钮不应该接收到该区域的点击)。
另一种可能的方法是不实现单独的按钮,而是为整个控件组合的每个状态提供一个方形图像。
你肯定必须知道你的图像的实际大小——看ViewTreeObserver.OnGlobalLayoutListener
和getMeasuredWidth()
/ getMeasuredHeight()
(当点击发生时,后两个可能已经被使用,尽管在布局发生之前它们返回零)。
您可以从ArcMenu或CircleLayout开始并对其进行自定义以支持位于中心的小部件。或者您可以从头开始创建自己的布局。此处提供了如何执行此操作的好文章。