0

我一直在努力让 Activity 在选择数据并准备好显示之前不显示:Prevent screen display until after fetching data

终于在主题的帮助下让它工作了。

现在我有另一个问题。

我需要动画从一个活动到下一个活动的过渡。我知道如何使用 overridePendingTransition 但这在这里不起作用,因为当我想做动画时我已经在目标 Activity 中。我能看到另一个的唯一原因是因为当前的一个是透明的。

我滑入新的没有问题:

    View view = getLayoutInflater().inflate(R.layout.content_screen, null);
    view.startAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right));
    setContentView(view);

但是,我想不出任何办法让旧的滑出。

有什么想法吗?

4

1 回答 1

0

创建一个“向左滑出”动画。然后为新视图调整动画,因此当动画开始时,您将另一个动画应用并启动到另一个视图。例如,

Animation animation = AnimationUtils.loadAnimation(context,
            R.anim.slide_in_right);
    animation.setDuration(TIME);
    animation.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
                        // TODO - Set and start other animation here
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {

        }
    });

view.startAnimation(animation);

[编辑]

 // First, define and infalte the view that will be incoming
 View upcomingView = inflater.inflate(...);

 // Next, we'll set the animation up
 Animation animation = AnimationUtils.loadAnimation(context,
        R.anim.slide_in_right);
animation.setDuration(TIME);
animation.setAnimationListener(new AnimationListener() {

    @Override
    public void onAnimationStart(Animation animation) {
        Animation outAnimation = AnimationUtils.loadAnimation(context,
        R.anim.slide_out_left);
        upcomingView.startAnimation(outAnimation);
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {

    }
});

currentView.startAnimation(animation); // This will start the animation defined above, which will also set and start the animation for the incoming object
于 2012-08-08T13:58:15.450 回答