我正在尝试为我的android应用程序中的自定义地图标记制作动画。可以将初始视口想象成一个直立的矩形(动画矢量形状,即本例中的标记占据了该矩形的大部分)。初始值如下:
然后,在运行期间,如果单击了标记,则它将旋转-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>
还有一点要注意:枢轴点(即矢量形状围绕其旋转的点)设置为视口的中心,因此排除了枢轴点错误(希望如此)。