我试图在棒棒糖前设备上制作动画点,但我还是得到了:
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
答案 0 :(得分:1)
我认为这是因为&#34;错误&#34;投。您需要将Drawable
从ImageView
投射到AnimatedVectorDrawable
或AnimatedVectorDrawableCompat
。
androidImageView.setOnClickListener(v -> ((AnimatedVectorDrawable) androidImageView.getDrawable()).start());
您需要使用path
将group
包围起来,以执行scale
或rotate
等动画,并且您需要在{{{{}}中引用该组中的名称1}}在你的`。
<target>