프레임에니메이션 (AnimationDrawable) 아웃 오브 메모리 ㅠ_ㅠ
package com.doubleclass.godofprank;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class game_04 extends Activity implements SensorEventListener {
private LinearLayout layout1;
private LinearLayout layout2;
ImageView imageView01;
ImageView imageView02;
Drawable ani_game04;
Drawable ani_game04_fin;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game04);
layout1 = (LinearLayout) findViewById(R.id.fin_layout);
layout2 = (LinearLayout) findViewById(R.id.btn_layout);
//뒤로가기 버튼 시작
ImageButton btnb = (ImageButton) findViewById(R.id.btnBack);
btnb.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v) {
finish();
}
});
ImageButton btnC = (ImageButton) findViewById(R.id.btnCatch);
btnC.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v) {
layout2.setVisibility(View.INVISIBLE);
layout1.setVisibility(View.VISIBLE);
ImageView imgView02 = (ImageView)findViewById(R.id.imageView02);
imgView02.setBackgroundResource(R.drawable.ani_game04_fin);
AnimationDrawable frame02 = (AnimationDrawable)imgView02.getBackground();
frame02.start();
}
});
}
@Override
protected void onResume()
{
super.onResume();
// 뷰가 화면에 뿌려지기 전에는 애니메이션이 시작하지 못한다.
// 약간의 딜레이를 주기 위하여 핸들러를 이용한다.
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
ImageView imgView01 = (ImageView)findViewById(R.id.imageView01);
imgView01.setBackgroundResource(R.drawable.ani_game04);
AnimationDrawable frame01 = (AnimationDrawable)imgView01.getBackground();
frame01.start();
}
}, 500);
@Override
protected void onDestroy() {
super.onDestroy();
System.gc();
}
}
----------------------------------------------------------------------------------------------------
프레임에니메이션 사용시 해당 리소스를 .recycle(); 로 해제시켜주라고 하던데 어떻게 해야 되는지 도통 알수가 없습니다.
onDestroy() 안에다가 recycleBitmap(imageView01); 라든가 ((BitmapDrawable)imageView01.getDrawable()).getBitmap().recycle();
라든가 몇가지 방법을 넣어봤는데 전혀 해결되지 않습니다.
이문제 하나로 3주째 골머리를 썩고있습니다 ㅠㅠ
선배님들이 보시기엔 간단한 문제겠지만 저같은 평민에겐 식음을 전폐할 정도의 큰 시련입니다 ㅎㅎㅎㅎ
따뜻한 구원의 손길을 기다려봅니다 ^^