それぞれがアニメーションをアクティブにする2つのボタンを持つレイアウトがあります。ボタンをクリックすると、ボタンが消えるレイアウトが表示され、アニメーションが開始されます。メモリの問題により、最初のアニメーションの後に 2 番目のアニメーションをアクティブにできません。アニメーションの 1 つが再生された後、2 番目のアニメーションをロードできるように、何らかの形でメモリを解放する必要があります。アニメーションを解放してすべてのフレームを削除するにはどうすればよいですか?
これが私のコードです:
public class BermadMain extends Activity {
public static final String TAG = "Bermad";
AnimationDrawable animation, animation2, animation3;
ImageView imageAnim;
RelativeLayout lay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lay = (RelativeLayout) findViewById(R.id.rallay);
imageAnim = (ImageView) findViewById(R.id.imageView1);
final Button refinery = (Button) findViewById(R.id.refinery);
refinery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i=85;
animation = new AnimationDrawable();
animation.addFrame(getResources().getDrawable(R.drawable.ref1), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref2), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref3), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref4), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref5), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref6), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref7), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref8), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref9), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref10), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref11), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref12), i);
animation.addFrame(getResources().getDrawable(R.drawable.ref13), i);
imageAnim.setBackgroundDrawable(animation);
imageAnim.post(new Refiney());
lay.setVisibility(View.GONE);
}
});
final Button oil = (Button) findViewById(R.id.oil);
oil.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i=85;
animation2 = new AnimationDrawable();
animation2.addFrame(getResources().getDrawable(R.drawable.oil1), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil2), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil3), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil4), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil5), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil6), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil7), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil8), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil9), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil10), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil11), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil12), i);
animation2.addFrame(getResources().getDrawable(R.drawable.oil13), i);
imageAnim.setBackgroundDrawable(animation2);
imageAnim.post(new Oil());
lay.setVisibility(View.GONE);
}
});
}
public void onBackPressed() {
lay.setVisibility(View.VISIBLE);
return;
}
class Refiney implements Runnable {
public void run() {
animation.start();
}
}
class Oil implements Runnable {
public void run() {
animation2.start();
}
}
}