5

ボタンを押すと消えて、linearLayoutもう一度ボタンを押すと元に戻ります。しかし、それはとても速く、見栄えがよくありません。私はこれを介して行います:

disappearView.setVisibility(View.GONE);

アニメーションを追加したいのですが...レイアウトが残っていたスペースが見えないように可視性を設定した場合。だから私はこれを試しました:

if (disappearView.getVisibility() == View.VISIBLE){
            Animation out = AnimationUtils.makeOutAnimation(this, true);
            disappearView.startAnimation(out);
            disappearView.setVisibility(View.INVISIBLE);
            disappearView.setVisibility(View.GONE);

        }
        else {
            Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
            disappearView.startAnimation(in);
            disappearView.setVisibility(View.VISIBLE);      
        }

これにより、アニメーションが速すぎて消えてしまいます。まったく見えません。gone設定後にスレッドを使用して開始する必要がありinvisibleますか...または遅延しますか?それとも、これをすべて行うためのより良い方法はありますか?

4

2 に答える 2

15

何を達成しようとしているのか正確にはわかりません...LinearLayoutをすぐに消えるのではなく、少しの時間でフェードアウトさせたいですか?そして、フェードアウトしたら、View.GONEを介して親から削除されますか?

その場合、フェードアウトにAlphaAnimationを使用して、EvZのようなリスナーをアタッチできます。

AlphaAnimation fadeOutAnimation = new AlphaAnimation(1, 0); // start alpha, end alpha
fadeOutAnimation.setDuration(1000); // time for animation in milliseconds
fadeOutAnimation.setFillAfter(true); // make the transformation persist
fadeOutAnimation.setAnimationListener(new AnimationListener() {         
    @Override
    public void onAnimationEnd(Animation animation) {
        linearLayout.setVisibility(View.GONE);
    }

    @Override
    public void onAnimationRepeat(Animation animation) { }

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

linearLayout.setAnimation(fadeOutAnimation);
于 2013-01-15T17:14:20.480 に答える
4

使用してみることができますonAnimationEndAnimation.AnimationListener

于 2013-01-15T17:00:30.467 に答える