setX / setY тормозит RotateAnimation и View слайды - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужна стрелка, которая должна показывать значение, например, спидометр.Итак, у меня есть представление в 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?

...