setX / setY刹车RotateAnimation和View幻灯片

时间:2018-11-21 23:19:08

标签: android layout rotation android-animation

我想要一根指针,该指针应显示一个值,例如速度表。 所以我有一个XML视图

    <View
        android:id="@+id/view_needle"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/customborder" />

然后我计算针的位置并为视图设置X / Y。 看起来不错。从特定区域的中心指向刻度的针。

然后我执行以下操作(仅用于测试旋转针)

    animSet = new AnimationSet(true);
    animSet.setInterpolator(new DecelerateInterpolator());
    animSet.setFillAfter(true);
    animSet.setFillEnabled(true);

    startAngle = (startAngle >= 360) ? 0 : startAngle;
    animRotate = new RotateAnimation(startAngle, startAngle + 10,
            RotateAnimation.RELATIVE_TO_SELF, 0f,
            RotateAnimation.RELATIVE_TO_SELF, 0f);
    startAngle = startAngle + 10;
    animRotate.setDuration(timer3s);
    animRotate.setFillAfter(true);
    animSet.addAnimation(animRotate);

    ImgNeedle.startAnimation(animSet);

,并且针开始随旋转而漂移。看起来枢轴点不是视图的X / Y顶点,而是屏幕的0,0坐标(这是基于XML的原始坐标)。

如果我将XML视图移动到这样的位置

    <View
        android:id="@+id/view_needle"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignStart="@+id/tx_optimalrange"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="123dp"
        android:background="@drawable/customborder" />

不要执行setX和setY,针的旋转几乎会很好,但是钢会导致顶点的少量漂移。也许是因为我更改了视图的高度和宽度。

如何设置setX和setY并正确执行RotateAnimation?

0 个答案:

没有答案