VectorDrawableパスは、SVG pathsと同じ構文を使用します。これらの指示に従うと、左と右のリング部分が最初にトレースされ、その後に本体とボトムビットがトレースされることがわかります。
リンガーを本体と別にアニメーション化するには、それを独自のパスに分割します。
<!-- The ringer -->
<path
android:fillColor="@color/dark_grey"
android:pathData="M7.58,4.08L6.15,2.65C3.75,4.48 2.17,7.3 2.03,10.5h2c0.15,-2.65 1.51,-4.97 3.55,-6.42zM19.97,10.5h2c-0.15,-3.2 -1.73,-6.02 -4.12,-7.85l-1.42,1.43c2.02,1.45 3.39,3.77 3.54,6.42z" />
<!-- The body -->
<path
android:fillColor="@color/dark_grey"
android:pathData="M18,11c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2v-5zM12,22c0.14,0 0.27,-0.01 0.4,-0.04 0.65,-0.14 1.18,-0.58 1.44,-1.18 0.1,-0.24 0.15,-0.5 0.15,-0.78h-4c0.01,1.1 0.9,2 2.01,2z" />
その後、我々はアニメーターがそれに添付し、そしてあなたがその位置や回転をアニメーション化する場合<group>
でそれをラップすることができますので、その部分に名前を付ける必要があります。私は回転のためにピボットポイントを目の当たりにした。
<group android:name="ringer" android:pivotX="12" android:pivotY="10.5">
<path
android:fillColor="@color/dark_grey"
android:pathData="M7.58,4.08L6.15,2.65C3.75,4.48 2.17,7.3 2.03,10.5h2c0.15,-2.65 1.51,-4.97 3.55,-6.42zM19.97,10.5h2c-0.15,-3.2 -1.73,-6.02 -4.12,-7.85l-1.42,1.43c2.02,1.45 3.39,3.77 3.54,6.42z" />
</group>
AnimatedVectorDrawableに埋め込み、そのグループにアニメーションを添付することができます。
<?xml version="1.0" encoding="utf-8"?>
<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:width="140dp" android:height="140dp"
android:viewportWidth="24.0" android:viewportHeight="24.0">
<group android:name="ringer" android:pivotX="12" android:pivotY="10.5">
<path
android:fillColor="@color/dark_grey"
android:pathData="M7.58,4.08L6.15,2.65C3.75,4.48 2.17,7.3 2.03,10.5h2c0.15,-2.65 1.51,-4.97 3.55,-6.42zM19.97,10.5h2c-0.15,-3.2 -1.73,-6.02 -4.12,-7.85l-1.42,1.43c2.02,1.45 3.39,3.77 3.54,6.42z" />
</group>
<path
android:fillColor="@color/dark_grey"
android:pathData="M18,11c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2v-5zM12,22c0.14,0 0.27,-0.01 0.4,-0.04 0.65,-0.14 1.18,-0.58 1.44,-1.18 0.1,-0.24 0.15,-0.5 0.15,-0.78h-4c0.01,1.1 0.9,2 2.01,2z" />
</vector>
</aapt:attr>
<target android:name="ringer">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="50"
android:propertyName="rotation"
android:valueFrom="-15"
android:valueTo="15"
android:repeatCount="infinite"
android:repeatMode="reverse"/>
</aapt:attr>
</target>
</animated-vector>
は、あなたがそれを実行したいときに描画可能にAnimatable2#start()を呼び出すことを忘れないでください。
XMLでそのようなエラーが表示されます。「要素のアニメーション化されたベクトルに必要な属性がありません:android:drawable' – Yugesh
@Yugesh IDEが間違っています。コンパイルして正常に動作します。 IDEを使用する場合は、 'aapt:attr'ビットを別々のリソースファイルに取り出し、それらを参照する属性を記述します。 https://developer.android.com/guide/topics/resources/complex-xml-resources.html – ephemient
ありがとうございます。アニメーションが完成した後、元の位置に戻っていません。元の位置に戻って利用可能なXMLプロパティまたはAnimation Completedの後に設定されています。 – Yugesh