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 张图像将被销毁。

有没有其他方法可以优化这个?请提出建议。

提前致谢。

4

1 回答 1

1

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

优化这个的好方法是优化你正在加载的drawable。您可以根据屏幕 DPI 加载。在小屏幕内加载大图像是没有用的。阅读这篇关于图像加载链接的帖子。

您也可以尝试使用主图像作为背景,并且仅在动画中使用动画部分。

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

于 2013-03-18T05:01:52.657 回答