我正在开发一个导游应用程序。 我正在使用动画列表按顺序显示一些图像。但是我已经失去了内存错误。 这是我的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>
请帮我解决这个问题。提前致谢。我是否必须实现任何类才能克服此错误?
答案 0 :(得分:0)
您需要从代码中设置图像。您应该创建单个位图,将图像设置为它并将其显示给用户。您可以不时将当前图像更改为另一个图像。