同时在他们自己的轨道中心周围的圆形路径中移动六个点

时间:2016-11-06 23:53:47

标签: android

假设我在圆周上以Canvas绘制了六个点,呈六边形。

enter image description here

我想同时在一个小的圆形路径中移动并重新绘制这六个点中的每一个 - 例如,每个点沿着圆的圆周移动,圆的半径是较大圆的半径的1/10。

我对如何使用CanvasonDraw感到有点迷失,我不知道是否存在更好的解决方案。你会怎么做?

Some答案至少指出了这一点,它显示了一个点如何沿着圆形路径移动,但我不知道如何在这种情况下实现它:

for (double t = 0; t < 2*Pi; t += 0.01) 
{
    x = R*cos(t) + x_0;
    y = R*sin(t) + y_0;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种方法:

从扩展View并覆盖onDraw的自定义视图开始。使用Canvas的绘图功能,您就在正确的轨道上。

为自定义视图提供一个字段来保存当前角度:

        private float mTheta;

然后添加如下方法:

        public void setTheta(float radians) {
            mTheta = radians;
            invalidate();
        }

然后在onDraw中,使用mTheta的当前值来计算积分的位置。

当然,使用自定义视图,您可能需要使用onMeasure覆盖来处理大小调整,并且可能需要使用onLayout覆盖来处理某些布局。如果您将视图的尺寸设置为绝对dp值,则默认行为应该适用于您。

这样做可以设置为覆盖onTouch并允许用户互动来移动图形,或使用ValueAnimator从0到2π循环调用setTheta AnimatorUpdateListener

将一些代码放在一起,当你遇到困难时,发布另一个问题。如果您通过指向新问题的链接为此答案添加评论,我会看一下。