1

私は次のコードを持っています:

public boolean stopped = false;

public void fadeOut(final ImageView obj, final int time, int delay)
    {
        if(stopped)
        {
            stopped = false;
            anim = new AlphaAnimation(1.00f, 0.00f);
            anim.setDuration(time);
            if(delay > 0)
            {
                anim.setStartOffset(delay);
            }
            anim.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading out. Duration: " + time + "ms.");

                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading out finished.");
                    //obj.setAlpha(255);
                    stopped = true;
                }
            });
            obj.startAnimation(anim);
        }
    }

このコードは正常に機能します。私のオブジェクト(ImageView)は美しくフェードアウトします。しかし、私がこれを実行すると:

public void fadeIn(final ImageView obj, final int time, int delay)
    {
        if(stopped)
        {
            stopped = false;
            anim = new AlphaAnimation(0, 1);
            anim.setDuration(time);
            if(delay > 0)
            {
                anim.setStartOffset(delay);
            }
            anim.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading in. Duration: " + time + "ms.");

                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading in finished.");
                    //obj.setAlpha(255);
                    stopped = true;
                }
            });
            obj.startAnimation(anim);
        }
    }

それは機能しません-フェードインはありません。ImageViewステーは完全に透明なままです。

なぜこれなのか、何かアイデアはありますか?

そして、疑問に思っている人のために、はい、ブール値を宣言して設定しstoppedました。LogCatを見ると、fadeIn()関数の実行時にテキストが出力されるため、問題ではありません。

4

2 に答える 2

1

解決しました!

を使用して、たとえばに[ImageView Object].setAlpha設定すると、を実行すると、画像の境界と現在のアルファの間で機能することがわかります。0AlphaAnimation0

したがって、フェードアウト後に画像を非表示にしておきたい場合、解決策はを使用し、アニメーションを実行する前に画像を[ImageView Object].setVisibility(View.INVISIBLE)元に戻すことです。View.VISIBLE

任務完了。

于 2012-05-27T11:09:41.503 に答える
0

ビューの可視性はView.VISIBLEに設定されていますか?

于 2012-05-27T09:35:41.407 に答える