0

好的,所以我已经处理了从内部淡出的内容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并且一切都消失了。

那么,我如何使用淡出而不删除我的内容?

4

1 回答 1

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);
于 2013-02-20T19:13:20.120 回答