首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能使用AnimatedVectorDrawable动画FAB绘图

不能使用AnimatedVectorDrawable动画FAB绘图
EN

Stack Overflow用户
提问于 2017-04-25 09:22:39
回答 1查看 558关注 0票数 0

我试图动画的FAB绘图,但它抛出这个错误。错误将抛出在可绘图上调用.start()的行上。

代码语言:javascript
复制
--------- beginning of crash
04-25 14:40:09.169 25611-25611/com.test.testingfabanimation E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                       Process: com.test.testingfabanimation, PID: 25611
                                                                                       java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
                                                                                           at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.createRTAnimator(AnimatedVectorDrawable.java:1262)
                                                                                           at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.parseAnimatorSet(AnimatedVectorDrawable.java:1220)
                                                                                           at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.init(AnimatedVectorDrawable.java:1187)
                                                                                           at android.graphics.drawable.AnimatedVectorDrawable.ensureAnimatorSet(AnimatedVectorDrawable.java:851)
                                                                                           at android.graphics.drawable.AnimatedVectorDrawable.start(AnimatedVectorDrawable.java:834)
                                                                                           at com.test.testingfabanimation.MainActivity$1.onPageSelected(MainActivity.java:41)
                                                                                           at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1967)
                                                                                           at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:685)
                                                                                           at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:669)
                                                                                           at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2284)
                                                                                           at android.view.View.dispatchTouchEvent(View.java:10024)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2626)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2307)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                                           at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                                           at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                                           at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:413)
                                                                                           at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1809)
                                                                                           at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
                                                                                           at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                                           at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:375)
                                                                                           at android.view.View.dispatchPointerEvent(View.java:10244)
                                                                                           at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4438)
                                                                                           at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4306)
                                                                                           at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
                                                                                           at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
                                                                                           at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
                                                                                           at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3999)
                                                                                           at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
                                                                                           at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4056)
                                                                                           at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
                                                                                           at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
                                                                                           at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
                                                                                           at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
                                                                                           at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
                                                                                           at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6246)
                                                                                           at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6220)
                                                                                           at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6181)
04-25 14:40:09.171 25611-25611/com.test.testingfabanimation E/AndroidRuntime:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6349)
                                                                                           at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                                           at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                                           at android.os.MessageQueue.next(MessageQueue.java:323)
                                                                                           at android.os.Looper.loop(Looper.java:136)
                                                                                           at android.app.ActivityThread.main(ActivityThread.java:6169)
                                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
                                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)

这是MainActivity中的代码,我在这里试图为FAB动画。

代码语言:javascript
复制
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                switch (position) {
                    case 0:
                        fab.setImageResource(R.drawable.animate_forward);
                        break;
                    case 1:
                        fab.setImageResource(R.drawable.animate_backward);
                        break;
                }
                Drawable drawable = fab.getDrawable();
                if (drawable instanceof AnimatedVectorDrawable)
                    ((AnimatedVectorDrawable) drawable).start();
            }
        });

我已经创建了自定义绘图使用Roman的Android图标动画。

代码语言:javascript
复制
<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:width="24dp"
            android:height="24dp"
            android:viewportWidth="24"
            android:viewportHeight="24"
            android:alpha="1">
            <path
                android:name="foo"
                android:pathData="@string/forward"
                android:strokeColor="#000000"
                android:strokeWidth="2"
                android:strokeLineCap="round"/>
        </vector>
    </aapt:attr>
    <target android:name="path_morph">
        <aapt:attr name="android:animation">
            <objectAnimator
                android:name="foo"
                android:propertyName="pathData"
                android:duration="300"
                android:valueFrom="@string/forward"
                android:valueTo="@string/backward"
                android:valueType="pathType"
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
        </aapt:attr>
    </target>
</animated-vector>

animate_forward和animate_backword xml类似。只交换路径中的字符串值。

这是我第一次使用AnimatedVectorDrawables。我遗漏了什么吗?所有的教程都在网络上显示相同的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-27 10:25:35

目标名称必须是要动画的对象的名称。将目标名称设置为"foo“。您也不需要为ObjectAnimator本身设置任何名称。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43606569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档