我想用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个图像将被破坏。?
还有其他方法可以优化吗? 建议请。
先谢谢。
答案 0 :(得分:1)
System.gc()是垃圾收集器的提示。这意味着垃圾收集器在执行此代码行后可能无法收集垃圾。
优化此方法的好方法是优化您正在加载的drawable。您可以根据屏幕DPI加载。在小屏幕内加载大图像是没有用的。阅读此帖关于图片加载link。
您也可以尝试使用主图像作为背景,仅使用动画内部的动画部分。
或者,您可以尝试使用SoftReference。如果遇到堆内存问题,这至少可以解决这个问题。