尝试制作圆形布局,其中元素位于不同距离的中心周围

时间:2016-03-06 18:57:32

标签: java android android-layout user-interface mobile

我正在构建一个原型Android应用程序,而我正试图制作一个圆形布局。基本上,我有一个中心点,我希望能够将其他元素放在它周围的圆圈中like this。我尝试过使用了一个名为ArcLayout的库,它运行良好,但它并不适用于我想做的事情。我试图放置的元素与中心有一个动态距离,在任何给定时间可能有相似或相同的距离。

我可以为每个距离级别创建一个新的弧布局,但我试图避免something like this。理想情况下,布局中的每个元素都应将自身定位在距离所有其他元素的最大距离处,同时与中心保持正确的距离。

我从雷达图表到轨道动画中查找了许多不同的东西,但它们似乎都不适用于我想做的事情。我该如何制作这样的东西?

1 个答案:

答案 0 :(得分:0)

以下是我将如何执行此操作的高级别说明:

使原始视图扩展View类。在您的提款方法中,执行以下操作:

  1. 首先通过getWidth()/ 2,getHeight()/ 2获取小圆圈的坐标,在视图中心绘制圆。设置一些固定的半径。将中心存储为cx,cy

  2. 现在,您需要在正确的位置绘制其他圆圈,因为您需要每个圆圈的中心。现在,从cx,cy如果你有x轴的角度和从cx,cy到新点的距离,你可以得到新点的坐标,如下所示:

       cx1 = cx + r*cos(theta) and cy2 = cy + r*sin(theta). 
      where r is the distance between the points and theta is the angle between line joining the points and the positive x-axis.
    
  3. 请记住在计算中将度数转换为弧度。

    1. 获得新圆圈的坐标后,只需使用canvas.drawCircle方法绘制它。
    2. 根据需要经常重复此方法。