ImageView something = (ImageView)findViewById(R.id.my_animated_image_view); something.setVisibility(View.INVISIBLE); ((AnimationDrawable)something.getDrawable()).stop(); // <-- Is this line redundant?
在我的情况下,我有一堆动画,其中只有一个运行/可见,而现在我正在调用所有这些动画的setVisibility()和stop()。如果我不需要自己调用stop(),可能会变得更快?
答案 0 :(得分: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的事情。尝试设置Alpha动画,使其透明并设置SetFillAfter(true)。当动画结束呼叫视图到需要的setVisibility(View.Invisible)
时。这可能会给你一些FPS。但通常会考虑一下当你动画时UI的内容。避免GC调用并查看失效