前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Android] Fragment进入退出动画(转场动画)

[Android] Fragment进入退出动画(转场动画)

原创
作者头像
用户3702315
修改2021-06-17 11:55:06
4.6K0
修改2021-06-17 11:55:06
举报
文章被收录于专栏:安卓开发安卓开发
简单的前言

为Fragment中添加进场和退出动画是一个很简单的用法,主要就是依靠 FragmentManager 的 setCustomAnimations() 或者 setTransition() 方法,这是两种不同方式设置动画,具体的使用方式参考下面案例。

setCustomAnimations()
代码语言:txt
复制
// 后面两个参数是在回退栈中添加和退出的动画,如果不添加到回退栈可以忽略
// setCustomAnimations(enter, exit, popEnter, popExit)  
// setCustomAnimations(enter, exit)

getSupportFragmentManager()
    .beginTransaction()
    .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right, R.anim.slide_in_right, R.anim.slide_out_right)
    .add(R.id.framlayout, new FilePickerFragment())
    .addToBackStack(null)
    .commit();
setTransition()
代码语言:txt
复制
getSupportFragmentManager()
    .beginTransaction()
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
    .add(R.id.framlayout, new FilePickerFragment())
    .addToBackStack(null)
    .commit();

// ---------------------------------------------------------------------------------------

// onCreateAnimation() 是 Fragment 的一个方法,配合 setTransition() 使用
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
        if (transit == FragmentTransaction.TRANSIT_FRAGMENT_OPEN) {
            if (enter) {
                // 表示普通的进入的动作,比如add、show、attach等
                return AnimationUtils.loadAnimation(getContext(), R.anim.anim_bottom_in);
            } else {
                // 比如一个Fragmen已经被另一个replace,被replace的那个就是false
                return AnimationUtils.loadAnimation(getContext(), R.anim.anim_out);
            }
        } else if (transit == FragmentTransaction.TRANSIT_FRAGMENT_CLOSE) {
            if (enter) {
                // 之前被replace的重新进入到界面或者Fragment回到栈顶
                return AnimationUtils.loadAnimation(getContext(), R.anim.anim_in);
            } else {
                // 表示一个退出动作,比如出栈、remove、hide、detach等
                return AnimationUtils.loadAnimation(getContext(), R.anim.anim_bottom_out);
            }
        }
        return null;
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单的前言
  • setCustomAnimations()
  • setTransition()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档