布局旋钮和按钮视图

时间:2013-11-11 10:01:59

标签: android android-layout user-interface

我希望将这个复杂的控件移植到我的Android XML Layout中:

我需要按钮(心脏,云,......)和中央旋钮作为ImageButtons,因此它们应该是单独的对象并定位在准确的位置。

问题是如何布置这样复杂的按钮和背景,以便在具有不同分辨率的多个设备上正确显示。

enter image description here

3 个答案:

答案 0 :(得分:1)

如果你被允许动态地实现它,这里有一些提示:

  1. 创建单独的图片(背景)

    • 1个旋钮图像
    • 每个小按钮1张图片
    • 1张背景图片
  2. 半径

    • 测量从背景中心到应放置小按钮的点(背景图案的半径)的距离(以像素为单位)。
    • 您可能需要针对不同屏幕(不同分辨率)的不同尺寸
  3. 放置按钮

    • 放置背景图像和旋钮ImageButton,使旋钮的中心与背景的中心匹配 - 两个图像都应为矩形,因此中心点应位于对角线的交叉点
    • 使用spherical coordinatesretrieve小按钮的笛卡尔坐标(x,y) - 它们的中心应该位于这些点上
  4. 点击测试

    • 所有图片都应具有透明背景
    • 只有当事件位于ImageButton背景的非透明部分时,才能实现命中测试才能成功
  5. 轮换

    • 要旋转旋钮,您可以查找有关旋转ImageButton背景的更多信息。我没有尝试过这样的事情......

答案 1 :(得分:0)

您可能必须拦截onTouchEvent()并处理原始事件。通过这种方式,您可以知道用户手指在图片上的位置。

如果您可以容忍圆形图标下方的方形按钮,则更简单的解决方案是使用RelativeLayout。 (3个状态,正常选择按下。)实际上,您不需要按钮,您可以只查看您的视图。

我不确定您希望用户使用中央旋钮:按下它,用两个或三个手指转动等等。原则上,您可能有一个方形视图,其角落被不可点击的透明覆盖方形视图(或者它们应该是可点击的吗?我们的想法是旋钮不应该接收该区域的点击次数。)

另一种可能的方法是不实现单独的按钮,而是为整个控件组合的每个状态设置一个方形图像。

您肯定必须知道图片的实际尺寸 - 请参阅ViewTreeObserver.OnGlobalLayoutListenergetMeasuredWidth() / getMeasuredHeight()(当发生点击时,可能会使用后两者,尽管在布局发生之前,它们返回零。)

答案 2 :(得分:0)

您可以从ArcMenuCircleLayout开始,并对其进行自定义以支持位于中心的小部件。或者您可以从头开始创建自己的布局。好的文章如何提供here