0

ImageView何か=(ImageView)findViewById(R.id.my_animated_image_view);
something.setVisibility(View.INVISIBLE);
((AnimationDrawable)something.getDrawable()).stop(); // <-- この行は冗長ですか?

私の場合、1 つだけが実行/表示される一連のアニメーションがあり、現在、それらすべてで setVisibility() と stop() を呼び出しています。自分で stop() を呼び出す必要がなければ、高速になる可能性がありますか?

4

1 に答える 1

0

AnimationDrawableソースから:

@Override
    public boolean setVisible(boolean visible, boolean restart) {
        boolean changed = super.setVisible(visible, restart);
        if (visible) {
            if (changed || restart) {
                setFrame(0, true, true);
            }
        } else {
            unscheduleSelf(this);
        }
        return changed;
    }

したがって、 setVisible(false,false) を に適用するとAnimationDrawable、アニメーションが停止します。ただし、に適用する場合は異なりますView。アニメーションをスムーズにしたい場合は、AnimationDrawable.setVisible(false,false) を試してください。ビューを非表示にしたい場合は、多くの UI が発生するため、非表示にしないでください。アルファ アニメーションを設定し、透明にして、FillAfter(true) を設定してみてください。アニメーションが終了すると、ビューsetVisibility(View.Invisible)が必要な場所に呼び出されます。これにより、おそらくFPSが得られます。ただし、一般的には、アニメーション化するときに UI がどのように発生するかを全体的に検討してください。GC 呼び出しを回避し、無効化を表示する

于 2012-09-19T07:33:22.500 に答える