我想要一根指针,该指针应显示一个值,例如速度表。 所以我有一个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?