0

ボタンクリックで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>
4

2 に答える 2

0

onCreate からアニメーションを開始するのは良い方法ではありません。これを読んでください、それはあなたを助けるかもしれません.

于 2013-03-05T12:31:46.847 に答える
-3

コードを編集しましたが、現在は機能しています。エミュレータでアプリケーションをテストしたため、エラーはメモリ不足が原因だったと思います。デバイスでアプリをテストしましたが、完全に機能しています。

于 2013-03-05T10:45:39.767 に答える