如何在科特林中初始化动画矢量

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