Как изменить область просмотра анимированного вектора, который можно рисовать во время выполнения? - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь анимировать маркер карты в моем приложении для Android.Начальный видовой экран можно представить как стоящий прямоугольник (а анимированная векторная форма, т.е. маркер в моем случае занимает большую часть этого прямоугольника).Начальные значения выглядят следующим образом:

  • ширина: 57 (относится к объекту, который я пытаюсь анимировать)
  • высота: 80 (относится к объекту, который я пытаюсь оживить))
  • ширина области просмотра: 57
  • высота области просмотра: 80

Затем, во время выполнения, если щелкнуть маркер, он поворачивается на -90 градусов.По логике, ширина ограничительной рамки теперь равна 80, а высота 57. Однако область просмотра по-прежнему остается в своем первоначальном размере.Поэтому половина моей анимированной векторной фигуры обрезается.

Я пытался вручную изменить размер окна просмотра, чтобы увеличить его, но это не сработало, поскольку оно исказило мою форму в каждом из них.комбинация, в которой не было 57 и 80.

Возможно ли также вращать окно просмотра, поскольку я НЕ хочу уменьшать векторную форму, чтобы она помещалась в исходном окне просмотра.

Это мой xml-файл, представляющий анимированный вектор для рисования:

<animated-vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt">
    <aapt:attr name="android:drawable">
        <vector
            android:name="vector"
            android:width="57dp"
            android:height="80dp"
            android:viewportWidth="57"
            android:viewportHeight="80">
            <group android:name="group"
                android:pivotX="40"
                android:pivotY="28.5">
                <path
                    android:name="path"
                    android:pathData="M 28.41 2.24 L 8.08 22.24 L 28.41 42.49 L 48.74 22.24 L 28.41 2.24 Z"
                    android:fillColor="#ffffff"
                    android:strokeColor="#ffffff"
                    android:strokeWidth="1"
                    android:strokeMiterLimit="10"/>
                <path
                    android:name="path_1"
                    android:pathData="M 28.41 52.03 L 2.99 26.49 L 2.99 52.07 L 28.41 77.57 L 53.33 52.03 L 53.33 26.49 L 28.41 52.03 Z"
                    android:fillColor="#ffffff"
                    android:strokeColor="#ffffff"
                    android:strokeWidth="1"
                    android:strokeMiterLimit="10"/>
            </group>
        </vector>
    </aapt:attr>
    <target android:name="group">
        <aapt:attr name="android:animation">
            <set>
                <objectAnimator
                    android:propertyName="rotation"
                    android:duration="300"
                    android:valueFrom="0"
                    android:valueTo="-90"
                    android:valueType="floatType"
                    android:interpolator="@android:interpolator/fast_out_slow_in"/>
            </set>
        </aapt:attr>
    </target>
</animated-vector>

Еще одно примечание: точка поворота (то есть точка, вокруг которой вращается векторная фигура) установлена ​​в центробласти просмотра, поэтому ошибки точки поворота исключены (я надеюсь).

...