Android: Запустите AnimatedVectorDrawable анимацию в середине пути
Фон: я ищу, чтобы создать таймер обратного отсчета, похожий на таймер родного приложения Clock. Я очень новичок в Android-анимации, поэтому я оценивал различные решения. Я искал, чтобы пойти с AnimatedVectorDrawable
с, но попал в блокпост.
Вопрос: есть ли способ запустить анимацию на AnimationVectorDrawable
на полпути вместо с самого начала? Если нет, то как лучше всего создавать такую анимацию?
Вариант использования: я хочу, чтобы анимация обратного отсчета оставалась синхронизированной с минутными отметками на часах, поэтому, когда пользователь отображает ее в то время, которое не находится на минутной отметке, анимация обратного отсчета начинается посередине, поэтому она заканчивается на минутной отметке,
XML-макет для animated-vector
:
<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="26dp"
android:height="26dp"
android:viewportWidth="26"
android:viewportHeight="26">
<path
android:name="path"
android:pathData="M 13 1 C 6.373 1 1 6.373 1 13 C 1 19.627 6.373 25 13 25 C 19.627 25 25 19.627 25 13 C 25 6.373 19.627 1 13 1 Z"
android:strokeWidth="1"
android:fillType="evenOdd"/>
</vector>
</aapt:attr>
<target android:name="path">
<aapt:attr name="android:animation">
<set>
<objectAnimator
android:propertyName="trimPathStart"
android:duration="2950"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:interpolator="@android:anim/linear_interpolator"/>
<objectAnimator
android:propertyName="trimPathStart"
android:startOffset="2950"
android:duration="50"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
<objectAnimator
android:propertyName="strokeColor"
android:duration="1900"
android:valueFrom="#818181"
android:valueTo="#f0c473"
android:valueType="colorType"
android:interpolator="@android:anim/accelerate_interpolator"/>
<objectAnimator
android:propertyName="strokeAlpha"
android:duration="3000"
android:valueFrom="1"
android:valueTo="1"
android:valueType="floatType"
android:interpolator="@android:anim/linear_interpolator"/>
<objectAnimator
android:propertyName="strokeColor"
android:startOffset="1900"
android:duration="600"
android:valueFrom="#f0c473"
android:valueTo="#e06969"
android:valueType="colorType"
android:interpolator="@android:anim/accelerate_interpolator"/>
<objectAnimator
android:propertyName="strokeColor"
android:startOffset="2500"
android:duration="450"
android:valueFrom="#e06969"
android:valueTo="#e06969"
android:valueType="colorType"
android:interpolator="@android:anim/decelerate_interpolator"/>
<objectAnimator
android:propertyName="strokeColor"
android:startOffset="2950"
android:duration="50"
android:valueFrom="#e06969"
android:valueTo="#818181"
android:valueType="colorType"
android:interpolator="@android:anim/linear_interpolator"/>
</set>
</aapt:attr>
</target>
</animated-vector>