0

ボタンをクリックすると2つの利用可能な画像の1つを生成するアプリケーションをAndroidで作成しています。

問題は、最初のボタンを押すとアニメーションがスムーズに動作する (つまり、画像を生成してから消える) ことですが、2 回目のボタンを押すと、画像がそこに留まり、何も起こりません。理由がわかりません。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ImageView firstimage = (ImageView)findViewById(R.id.imageView2);
        final ImageView secondimage = (ImageView)findViewById(R.id.imageView1);
        final Button clickMe = (Button)findViewById(R.id.button);
        final TextView image_description = (TextView)findViewById(R.id.textView);
        image_description.setText("");

        final Animation fadeout = new AlphaAnimation(1,0);
        fadeout.setStartOffset(1000);
        fadeout.setDuration(1000);
        secondimage.setAnimation(fadeout);
        firstimage.setAnimation(fadeout);
        image_description.setAnimation(fadeout);
        secondimage.setVisibility(View.GONE);
        firstimage.setVisibility(View.GONE);
        image_description.setVisibility(View.GONE);
        clickMe.setVisibility(View.VISIBLE);    

        fadeout.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) { }

            @Override
            public void onAnimationEnd(Animation animation) {
                System.out.println("Animation block");
                secondimage.setVisibility(View.GONE);
                firstimage.setVisibility(View.GONE);
                image_description.setVisibility(View.GONE);
                clickMe.setVisibility(View.VISIBLE);
            }

            @Override
            public void onAnimationRepeat(Animation animation) { }
        }); 

        clickMe.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.out.println("Click block");
                Random r = new Random();
                int i = r.nextInt(2);
                clickMe.setVisibility(View.GONE);
                if(i == 0) {
                    secondimage.setVisibility(View.VISIBLE);
                    image_description.setText("LOOK it's a CAT");
                    image_description.setVisibility(View.VISIBLE);
                    secondimage.setAnimation(fadeout);
                    image_description.setAnimation(fadeout);
                } else {
                    firstimage.setVisibility(View.VISIBLE);
                    image_description.setText("LOOK it's a DOG");
                    image_description.setVisibility(View.VISIBLE);
                    firstimage.setAnimation(fadeout);
                    image_description.setAnimation(fadeout);
                }    
            }
        });    
    }

ログは次のようになります。

Click Block
Animation Block
Click Block
Click Block
Click Block
Click Block

2回目以降のクリックでコードがアニメーションブロックに到達しない理由は何ですか?

4

2 に答える 2

0

最も簡単な方法は、アニメーションが必要なビューごとに、アニメーション タイプ オブジェクトの新しいインスタンスを作成/インフレートすることです。あなたが今持っているように、同じオブジェクトを再利用しようとしています。

于 2016-04-08T20:20:41.520 に答える