Android:中途启动AnimatedVectorDrawable动画

时间:2018-04-12 16:55:02

标签: android android-animation android-vectordrawable objectanimator animatedvectordrawable

背景:我希望创建一个类似于原生Clock应用程序Timer的倒数计时器。我是Android动画的新手,所以我一直在评估各种解决方案。我希望和AnimatedVectorDrawable一起去,但遇到障碍。

问题:有没有办法在AnimationVectorDrawable中途而不是从头开始动画?如果没有,创建这样的动画的最佳做法是什么?

使用案例:我希望倒计时动画与时钟上的分钟标记保持同步,因此当用户在不在分钟标记上的时间显示时,倒计时动画开始中途通过,所以它完成了分钟标记。

animated-vector的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="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>

0 个答案:

没有答案