0

ImageView something = (ImageView)findViewById(R.id.my_animated_image_view);
something.setVisibility(View.INVISIBLE);
((AnimationDrawable)something.getDrawable()).stop(); // <-- 这条线是多余的吗?

就我而言,我有一堆动画,其中只有一个运行/可见,现在我正在对所有动画调用 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 问题。尝试设置Alpha动画,使其透明并设置FillAfter(true)。当动画结束调用视图到setVisibility(View.Invisible)需要的地方。这可能会给你一些 FPS。但一般要考虑在制作动画时会发生什么 UI 内容。避免 GC 调用并查看失效情况

于 2012-09-19T07:33:22.500 回答