Мне нужна стрелка, которая должна показывать значение, например, спидометр.Итак, у меня есть представление в 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, стрелка вращается почти хорошо, но у стали она имеет небольшое смещение вершины.Может быть, это потому, что я изменяю высоту и ширину вида.
Как установить X и установить Y и исправить RotateAnimation?