内存错误时使用AnimationDrawable [英] Out of Memory error when using AnimationDrawable

查看:221
本文介绍了内存错误时使用AnimationDrawable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从我创立了一些动画的PNG图像创建一个标志动画,并用一个内存不足的错误崩溃。有谁知道解决这个?

继承人是我迄今为止

我的继承人动画列表

 < XML版本=1.0编码=UTF-8&GT?;
<动画列表的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>
  <项目机器人:可绘制=@可绘制/ intro_animation_00机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_01机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_02机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_03机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_04机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_05机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_06机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_07机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_08机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_09机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_10机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_11机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_12机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_13机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_14机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_15机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_16机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_17机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_18机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_19机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_20机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_21机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_22机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_23机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_24机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_25机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_26机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_27机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_28机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_29机器人:时间=50/>
  <项目机器人:可绘制=@可绘制/ intro_animation_30机器人:时间=50/>
< /动画列表>
 

我的继承人布局

 < RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:paddingBottom会=@扪/ activity_vertical_margin
    机器人:以下属性来=@扪/ activity_horizo​​ntal_margin
    机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
    机器人:paddingTop =@扪/ activity_vertical_margin
    机器人:背景=@可绘制/ BG
    工具:上下文=MenuActivity。>

        < ImageView的
            机器人:ID =@ + ID / myanimation
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:SRC =@动画/ intro_animation
        />

< / RelativeLayout的>
 

这是我的活动

  @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.layout_menu);
        ImageView的myAnimation =(ImageView的)findViewById(R.id.myanimation);
        最后AnimationDrawable myAnimationDrawable
        =(AnimationDrawable)myAnimation.getDrawable();

        myAnimation.post(
        新的Runnable(){

          @覆盖
          公共无效的run(){
           myAnimationDrawable.start();
          }
        });

    }
 

解决方案

尝试添加 largeHeap = TRUE 在你
您的应用程序标记 表现。

我希望这帮助。

或尝试使用小尺寸的图像。

Hi I'm trying to create a logo animation from a few png images i have created an animation and it crashes with an out of memory error. Does anyone know a solution to this?

heres what i have so far

heres my animation list

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item android:drawable="@drawable/intro_animation_00" android:duration="50" /> 
  <item android:drawable="@drawable/intro_animation_01" android:duration="50" />  
  <item android:drawable="@drawable/intro_animation_02" android:duration="50" /> 
  <item android:drawable="@drawable/intro_animation_03" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_04" android:duration="50" />  
  <item android:drawable="@drawable/intro_animation_05" android:duration="50" />  
  <item android:drawable="@drawable/intro_animation_06" android:duration="50" /> 
  <item android:drawable="@drawable/intro_animation_07" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_08" android:duration="50" /> 
  <item android:drawable="@drawable/intro_animation_09" android:duration="50" />  
  <item android:drawable="@drawable/intro_animation_10" android:duration="50" /> 
  <item android:drawable="@drawable/intro_animation_11" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_12" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_13" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_14" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_15" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_16" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_17" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_18" android:duration="50" />  
  <item android:drawable="@drawable/intro_animation_19" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_20" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_21" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_22" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_23" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_24" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_25" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_26" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_27" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_28" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_29" android:duration="50" />
  <item android:drawable="@drawable/intro_animation_30" android:duration="50" />
</animation-list>

heres my Layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/bg"
    tools:context=".MenuActivity" >

        <ImageView
            android:id="@+id/myanimation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@anim/intro_animation"
        />

</RelativeLayout>

Heres my Activity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_menu);
        ImageView myAnimation = (ImageView)findViewById(R.id.myanimation);
        final AnimationDrawable myAnimationDrawable
        = (AnimationDrawable)myAnimation.getDrawable();

        myAnimation.post(
        new Runnable(){

          @Override
          public void run() {
           myAnimationDrawable.start();
          }
        });

    }

解决方案

try to add largeHeap=true in your application tag of your
manifest.

I hope this help.

or try using small size image.

这篇关于内存错误时使用AnimationDrawable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆