所以我有这个动画列表drawable,它是一系列图像。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true">
    <item android:drawable="@drawable/image1" android:duration="2000" />
    <item android:drawable="@drawable/image2" android:duration="2000" />
</animation-list>


现在的问题是,有时我会收到此错误并导致我的应用强制关闭:

java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.drawable.AnimationDrawable
at com.example.try.drawable.AnimationClass.run(AnimationClass.java:80)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)


这是我在AnimationClass中指出的内容:

public void run() {
    ((AnimationDrawable) mImages.getDrawable()).start();
}


mImages变量是我在xml中拥有的变量。我向用户显示它们非常像splashImage。问题是我有时会收到此错误,但我不知道它是如何发生的。

附言
我有意更改了一些变量名和程序包名,但希望代码仍然像对我一样清晰。

最佳答案

每当您将位图设置为ImageView以进行回收时,android都会创建新的BitmapDrawable对象

BitmapDrawable drawable =new BitmapDrawable(bitmap);


并将其设置为ImageView ..因为要像Bitmap中那样回收Imageview

drawable.getBitmap().recycle();


这就是为什么它返回BitmapDrawable对象的原因

关于android - 有什么办法可以使Animation-List xml set drawable突然变成BitmapDrawable?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20796335/

10-10 08:35