0

我想用30帧做帧动画。 我对相同的代码是:如何优化框架动画?

animation = new AnimationDrawable(); 
    for (int i= 1; i<= 30 ; i++){ 
     frame= "xyz"+ i; 
     resource = this.getResources().getIdentifier(frame, "drawable", "com.example.frameanimation"); 
     Log.e("123", "resource value======"+resource+"============"+frame); 

     animation.addFrame(getResources().getDrawable(resource), 50); 


      System.gc(); 

    } 

    animation.setOneShot(false); 

在这段代码中我已经包括System.gc();。这会帮助我优化内存相关问题吗?或者它仍然可以提供与内存相关的问题。这是否意味着在帧动画中存在于内存中的30张图像将被破坏。

有没有其他的方法来优化这个? 建议请。

在此先感谢。

回答

1

System.gc()是垃圾收集器的提示。这意味着垃圾收集器在执行这行代码后可能不会收集垃圾。

优化这个的好方法是优化您正在加载的drawable。您可以基于屏幕DPI加载。在小屏幕中加载大图像没有用处。阅读本帖子关于图片加载link

您还可以尝试使用主图像作为背景,并且只使用动画中的动画部分。

或者,您可以尝试使用SoftReference。如果遇到堆内存问题,至少可以解决这个问题。

+0

我无法点击您提供的链接。 – Vaibs 2013-03-18 07:28:19