【发布时间】:2025-12-10 13:05:01
【问题描述】:
我需要在图像视图中显示动画。为此,我使用了以下代码。这是我的动画图像列表 xml 文件。
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/read_by_myselfenglish_1" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_2" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_3" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_4" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_5" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_6" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_7" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_8" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_9" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_10" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_11" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_12" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_13" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_14" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_15" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_16" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_17" android:duration="210" />
<item android:drawable="@drawable/read_by_myselfenglish_18" android:duration="210" />
这是我的 android 活动类。
package com.www.froginthewhole;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
public class MainClass extends Activity {
private AnimationDrawable frameAnimation;
private ImageView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_class);
view = (ImageView) findViewById(R.id.imageView1);
view.setBackgroundResource(R.anim.home_book);
frameAnimation = (AnimationDrawable) view.getBackground();
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
frameAnimation.start();
}
});
}
}
这里我需要在图像视图点击事件中更改图像。但不幸的是我得到了java.lang.OutOfMemoryError 运行时异常。我无法处理这个。这是我的日志。
12-03 20:18:58.492: E/AndroidRuntime(1187): java.lang.OutOfMemoryError
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.content.res.Resources.loadDrawable(Resources.java:1965)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.content.res.Resources.getDrawable(Resources.java:660)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:885)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:822)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.content.res.Resources.loadDrawable(Resources.java:1950)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.content.res.Resources.getDrawable(Resources.java:660)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.view.View.setBackgroundResource(View.java:14463)
12-03 20:18:58.492: E/AndroidRuntime(1187): at com.www.froginthewhole.MainClass.onCreate(MainClass.java:22)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.Activity.performCreate(Activity.java:5104)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.ActivityThread.access$600(ActivityThread.java:141)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.os.Handler.dispatchMessage(Handler.java:99)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.os.Looper.loop(Looper.java:137)
12-03 20:18:58.492: E/AndroidRuntime(1187): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-03 20:18:58.492: E/AndroidRuntime(1187): at java.lang.reflect.Method.invokeNative(Native Method)
12-03 20:18:58.492: E/AndroidRuntime(1187): at java.lang.reflect.Method.invoke(Method.java:511)
12-03 20:18:58.492: E/AndroidRuntime(1187): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-03 20:18:58.492: E/AndroidRuntime(1187): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-03 20:18:58.492: E/AndroidRuntime(1187): at dalvik.system.NativeStart.main(Native Method)
谁能帮帮我。
【问题讨论】:
-
查看此链接:developer.android.com/training/displaying-bitmaps/index.html。在显示大量图像时,OutofMemory 很常见。