此代码适用于Lollipop:
drawable = AppCompatResources.getDrawable(this, R.drawable.list_2_map_animated_vector_drawable)!!
(drawable as AnimatedVectorDrawableCompat).start()
但是在Oreo上它崩溃了这个例外:
Process: com.tractrac.otrack.debug, PID: 23424
java.lang.ClassCastException: android.graphics.drawable.AnimatedVectorDrawable cannot be cast to android.support.graphics.drawable.AnimatedVectorDrawableCompat
at com.myprettyapp.main.MainActivity$onCreate$6.onClick(MainActivity.kt:177)
at android.view.View.performClick(View.java:6303)
at android.view.View$PerformClick.run(View.java:24828)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
更改为(drawable as AnimatedVectorDrawable)
使其在Oreo上正常工作但在Lollipop中完全相同但是相反。
我认为AnimatedVectorDrawableCompat
对两者都有效。
我该如何解决这个问题?
答案 0 :(得分:1)
对于API 24及更高版本,此类委托给框架的AnimatedVectorDrawable。对于较旧的API版本,此类使用ObjectAnimator和AnimatorSet为VectorDrawableCompat的属性设置动画,以创建动画drawable。