在前棒棒糖的传染媒介动画

时间:2016-06-09 06:06:10

标签: android android-animation android-vectordrawable

我试图在棒棒糖前设备上制作动画点,但我还是得到了:

java.lang.NullPointerException
at android.animation.PropertyValuesHolder.setupSetterAndGetter(PropertyValuesHolder.java:505)

这是我的代码:

的活动:

public class MyActivity extends BaseActivity {

static {
  AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.my_activity);
  ImageView androidImageView = (ImageView) findViewById(R.id.animated);
  androidImageView.setOnClickListener(v -> ((Animatable) androidImageView.getDrawable()).start());
}

my_activity布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    >

<ImageView
        android:id="@+id/animated"
        android:layout_width="wrap_content"
        app:srcCompat="@drawable/animated_dot"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        />
</RelativeLayout>

animated_dot.xml:

<?xml version="1.0" encoding="utf-8"?>
<animated-vector     
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/dot_1">

<target
    android:animation="@anim/dot_animator"
    android:name="dot_name" />
</animated-vector>

dot_animator:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
        android:propertyName="scaleX"
        android:duration="250"
        android:valueFrom="1.0"
        android:valueTo="3.0"
        />
<objectAnimator
        android:propertyName="scaleY"
        android:duration="250"
        android:valueFrom="1.0"
        android:valueTo="3.0"
        />
</set>

和dot_1:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="24dp"
    android:viewportHeight="81.875"
    android:viewportWidth="65.59"
    android:width="24dp"
    >
<path
        android:fillColor="#FF000000"
        android:pathData="M-0.01,32.82a32.81,32.81 0,1 1,65.61 0c0,28.94 -32.8,49.04 -32.8,49.04S-0.01,61.77 -0.01,32.82Z"
        />
</vector>

此崩溃与主活动中的onClickListener相关联,并且仅在前lolipop设备上发生。如何在API 16上正确创建矢量缩放动画?另外一个问题是,在棒棒糖设备上,这也不起作用,当我点击它时什么也没发生。我使用的是图书馆设计:23.4.0

1 个答案:

答案 0 :(得分:1)

我认为这是因为&#34;错误&#34;投。您需要将DrawableImageView投射到AnimatedVectorDrawableAnimatedVectorDrawableCompat

 androidImageView.setOnClickListener(v -> ((AnimatedVectorDrawable) androidImageView.getDrawable()).start());

您需要使用pathgroup包围起来,以执行scalerotate等动画,并且您需要在{{{{}}中引用该组中的名称1}}在你的`。

<target>