如何在科特林中初始化动画矢量
how to init animated vector in kotlin
我跟随 this tutorial 并在 android studio 中创建了我的第一个动画矢量。
我的向量是:
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="491.4dp"
android:height="297.83dp"
android:viewportWidth="491.4"
android:viewportHeight="297.83"
android:drawable="@drawable/ic_logo">
<target android:name="name1">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="2000"
android:repeatCount="-1"
android:repeatMode="reverse">
<propertyValuesHolder android:propertyName="alpha" >
<keyframe
android:fraction="0"
android:value="1f" />
<keyframe
android:fraction=".5"
android:value="0f" />
<keyframe
android:fraction="1"
android:value="1f" />
</propertyValuesHolder>
</objectAnimator>
</aapt:attr>
</target>
<target android:name="name2">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="2000"
android:repeatCount="-1"
android:repeatMode="reverse">
<propertyValuesHolder android:propertyName="alpha" >
<keyframe
android:fraction="0"
android:value="1f" />
<keyframe
android:fraction=".5"
android:value="0f" />
<keyframe
android:fraction="1"
android:value="1f" />
</propertyValuesHolder>
</objectAnimator>
</aapt:attr>
</target>
</animated-vector>
看来我需要在 activity 中初始化它才能设置动画。但是我没有找到任何关于如何在 Kotlin 中初始化它的教程。有人可以帮我吗?
这取决于您如何应用此 Drawable。如果它设置在 ImageView 上,你可以使用
(imageView.drawable as? Animatable)?.start()
如果它是您可以使用的视图背景
(view.background as? Animatable)?.start()
假设有一个 imageview 上面可以绘制这个矢量
ImageView imageView = view.findViewById(R.id.animatedImage);
AnimatedVectorDrawable drawable = (AnimatedVectorDrawable)imageView.getDrawable();
drawable.start(); //this starts the animation
drawable.setVisible(true,true); //this also starts the animation from start
我跟随 this tutorial 并在 android studio 中创建了我的第一个动画矢量。
我的向量是:
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="491.4dp"
android:height="297.83dp"
android:viewportWidth="491.4"
android:viewportHeight="297.83"
android:drawable="@drawable/ic_logo">
<target android:name="name1">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="2000"
android:repeatCount="-1"
android:repeatMode="reverse">
<propertyValuesHolder android:propertyName="alpha" >
<keyframe
android:fraction="0"
android:value="1f" />
<keyframe
android:fraction=".5"
android:value="0f" />
<keyframe
android:fraction="1"
android:value="1f" />
</propertyValuesHolder>
</objectAnimator>
</aapt:attr>
</target>
<target android:name="name2">
<aapt:attr name="android:animation">
<objectAnimator
android:duration="2000"
android:repeatCount="-1"
android:repeatMode="reverse">
<propertyValuesHolder android:propertyName="alpha" >
<keyframe
android:fraction="0"
android:value="1f" />
<keyframe
android:fraction=".5"
android:value="0f" />
<keyframe
android:fraction="1"
android:value="1f" />
</propertyValuesHolder>
</objectAnimator>
</aapt:attr>
</target>
</animated-vector>
看来我需要在 activity 中初始化它才能设置动画。但是我没有找到任何关于如何在 Kotlin 中初始化它的教程。有人可以帮我吗?
这取决于您如何应用此 Drawable。如果它设置在 ImageView 上,你可以使用
(imageView.drawable as? Animatable)?.start()
如果它是您可以使用的视图背景
(view.background as? Animatable)?.start()
假设有一个 imageview 上面可以绘制这个矢量
ImageView imageView = view.findViewById(R.id.animatedImage);
AnimatedVectorDrawable drawable = (AnimatedVectorDrawable)imageView.getDrawable();
drawable.start(); //this starts the animation
drawable.setVisible(true,true); //this also starts the animation from start