Android切换视图

时间:2013-02-20 19:03:56

标签: android animation layout view switch-statement

好的,所以我在id内处理了淡出内容(感谢https://stackoverflow.com/a/4570977/971392)。

我有以下功能:

public void switchView(View view) {
        LayoutInflater inflater = LayoutInflater.from(getBaseContext());
        View to_load = inflater.inflate(R.layout.activity_register, null, false); 

        RelativeLayout rl = (RelativeLayout) findViewById(R.id.content_login);
        Animation fadeOutAnim = AnimationUtils.loadAnimation(LoginActivity.this, R.anim.fadeout);
        rl.startAnimation(fadeOutAnim);
        //rl.setVisibility(View.GONE);
        //rl.removeView(view);
        rl.addView(to_load);
}

它执行了所需的操作,如果我评论 rl.startAnimation(fadeOutAnim),那只是为了在更改视图上提供动画。

动画执行后,该功能会通过rl.addView()更改视图,但随后会应用fadeOut,一切都会消失。

那么,如果不删除我的内容,我怎么能使用淡出?

1 个答案:

答案 0 :(得分:1)

您需要延迟rl.addView(to_load);来电,直到淡出动画完成为止。这样做的方法是使用动画侦听器。

试试这样:

AnimationListener animListen = new AnimationListener() {
    public void onAnimationEnd(Animation animation) {
        rl.addView(to_load);
    }

    public void onAnimationRepeat(Animation animation) {
    }

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

Animation fadeOutAnim = AnimationUtils.loadAnimation(LoginActivity.this, R.anim.fadeout);
fadeOutAnim.setAnimationListener(animListen);
rl.startAnimation(fadeOutAnim);