使用动画列表时出现OutofMemory错误

时间:2014-08-14 12:07:43

标签: android android-layout bitmap out-of-memory android-animation

我正在开发一个导游应用程序。 我正在使用动画列表按顺序显示一些图像。但是我已经失去了内存错误。 这是我的logcat。

08-14 17:29:15.240: E/AndroidRuntime(20670):
java.lang.OutOfMemoryError 08-14 17:29:15.240:
E/AndroidRuntime(20670):    at
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 08-14
17:29:15.240: E/AndroidRuntime(20670):  at
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
08-14 17:29:15.240: E/AndroidRuntime(20670):    at
android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
08-14 17:29:15.240: E/AndroidRuntime(20670):    at
android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832)
08-14 17:29:15.240: E/AndroidRuntime(20670):    at
android.content.res.Resources.loadDrawable(Resources.java:2988) 08-14
17:29:15.240: E/AndroidRuntime(20670):  at
android.content.res.Resources.getDrawable(Resources.java:1558) 08-14
17:29:15.240: E/AndroidRuntime(20670):  at
android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
08-14 17:29:15.240: E/AndroidRuntime(20670):    at
android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
08-14 17:29:15.240: E/AndroidRuntime(20670):    at
android.graphics.drawable.Drawable.createFromXml(Drawable.java:873)
08-14 17:29:15.240: E/AndroidRuntime(20670):    at
android.content.res.Resources.loadDrawable(Resources.java:2970) 08-14
17:29:15.240: E/AndroidRuntime(20670):  at
android.content.res.Resources.getDrawable(Resources.java:1558) 08-14
17:29:15.240: E/AndroidRuntime(20670):  at
android.view.View.setBackgroundResource(View.java:15697)

这是我的代码。

public class Mahadewalaya extends FragmentActivity implements LocationListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maha_dewalaya);

        ImageView iv=(ImageView) findViewById(R.id.imageView_mahaDewalaya);
        iv.setBackgroundResource(R.drawable.animation_dewalaya);//animation.xml reference here
        iv.setScaleType(ScaleType.FIT_CENTER);
        final AnimationDrawable frameAnimation = (AnimationDrawable) iv.getBackground();

        if(frameAnimation.isRunning()){
                    frameAnimation.stop();
                }else{  
                    frameAnimation.stop();
                    frameAnimation.start();
                }
}

这是相关的布局文件。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageView_mahaDewalaya"
            android:layout_width="match_parent"
            android:layout_height="280dp"
            android:contentDescription="@string/imageVw" />
</LinearLayout>
</ScrollView>

这是动画列表。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

     <item
        android:drawable="@drawable/mahadewalaya_main"
        android:duration="10000"/>

    <item
        android:drawable="@drawable/dewalaya"
        android:duration="8500"/>


   <item
        android:drawable="@drawable/botree_dewalaya"
        android:duration="8500"/>
      <item
        android:drawable="@drawable/j"
        android:duration="8500"/>
       <item
        android:drawable="@drawable/manik_river"
        android:duration="8500"/>


</animation-list>

请帮我解决这个问题。提前致谢。我是否必须实现任何类才能克服此错误?

1 个答案:

答案 0 :(得分:0)

您需要从代码中设置图像。您应该创建单个位图,将图像设置为它并将其显示给用户。您可以不时将当前图像更改为另一个图像。