ボタンクリックでImageViewの画像を変更したいのですが、このimageViewでアニメーションも行っています。画像を変更するためsetImageDrawable()
に、imageView でメソッドを使用しています。問題は、このメソッドがすべての画像に対して機能しない場合があることです。画像を変更して ImageView の新しい画像を設定することもありますが、画像を変更せずに何も表示しないこともあります。コードをデバッグすると、すべての画像が表示されます。コードもエラーをスローしていないため、なぜそれが起こっているのかわかりません。メモリが原因でこの問題に直面していますか?
これが私のコードです:
public class AnimalsActivity extends Activity {
private Animation animalTranslate;
private ImageView animalImg;
private static int cnt = 0;
private ImageButton btnNext, btnPrev;
};
private int[] animalImages = { R.drawable.antelope, R.drawable.bull,
R.drawable.camel, R.drawable.deer, R.drawable.animal_elephant,
R.drawable.fox, R.drawable.giraffe, R.drawable.animal_horse,
R.drawable.iguana, R.drawable.jaguar, R.drawable.koala,
R.drawable.animal_lion, R.drawable.monkey, R.drawable.nyala,
R.drawable.orca, R.drawable.panda, R.drawable.quoll,
R.drawable.animal_rabbit, R.drawable.snake, R.drawable.tiger,
R.drawable.urial, R.drawable.vole, R.drawable.wolf,
R.drawable.xerus, R.drawable.yak, R.drawable.animal_zebra };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.animal_screen);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
btnNext = (ImageButton) findViewById(R.id.btn_animalNext);
btnPrev = (ImageButton) findViewById(R.id.btn_animalPrev);
animalImg = (ImageView) findViewById(R.id.animalImage);
StartAnimations(cnt);
btnNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cnt++;
if (cnt > 25) {
cnt = 0;
}
StartAnimations(cnt);
}
});
btnPrev.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cnt--;
if (cnt < 0) {
cnt = 25;
}
StartAnimations(cnt);
}
});
}
private void StartAnimations(int count) {
animalImg.setImageResource(animalImages[cnt]);
animalTranslate = AnimationUtils.loadAnimation(AnimalsActivity.this,
R.drawable.letters_translate);
animalImg.startAnimation(animalTranslate);
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
cnt = 0;
Intent readActivity = new Intent(AnimalsActivity.this,
HomeScreenActivity.class);
readActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(readActivity);
}
}
これが私のレイアウトです:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lyt_animal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/forest"
android:orientation="vertical" >
<ImageView
android:id="@+id/animalImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/txt_animal"
android:layout_centerHorizontal="true"
android:scaleType="fitXY" />
<ImageButton
android:id="@+id/btn_animalPrev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/animal_prev" />
<ImageButton
android:id="@+id/btn_animalNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@drawable/animal_next" />
</RelativeLayout>