Fragment的切换(包含动画和基本方法)

1. 封装Fragment切换方法

1.1 Fragment切换位置

在Activity中创建FragmentContainerView容器,一开始可以设置最初放置哪个Fragment

注意:要手动去code那里给它取一个名字哦

1.2 导入依赖库

implementation"androidx.fragment:fragment-ktx:1.6.0"

根据AS提示改版本哦!

1.3 样式案例

fun Fragment.navigateTo(
    target: Fragment,
    enterAnim: Int = R.anim.enter_from_right,
    exitAnim: Int = R.anim.exit_to_left,
    popEnter:Int = R.anim.pop_enter_from_left,
    popExit: Int = R.anim.pop_exit_to_right,
    addToStack:Boolean=true
){
    parentFragmentManager.commit {
        setCustomAnimations(enterAnim,exitAnim,popEnter,popExit )
        replace(R.id.fragmentContainerView, target)
        setReorderingAllowed(true)
        if (addToStack){ //是否入栈
            addToBackStack(null)
        }
    }
}

1.3.1 commit操作

在fragment内部调用parentFragmentManager.commit{},以帮助跳转时,同时进行入栈,加动画等多项操作

1.3.2 补间动画

setCustosAnimations()设置四个补间动画,顺序为代码所示

1.3.3 切换方法

replace  用后面得fragmentB替换当前fragmentA, A会彻底销毁掉

生命周期详解 (用TwoFragment替代OneFragment )

add  “推荐使用” 用fragmentB 附加到 fragmentA上 ,A暂停但不销毁 ,后续需要调用 show() 或 hide() 方法控制 A的显示 与 隐藏

1.3.4 addToBackStack(null)// 表示入栈

1.3.5 形参初始化操作

注意参数一开始赋予了初值,那么后续调用此方法,可以不传该参数的值

2. 补间动画 Animation

补间动画由变换动画组成 ,又分为四种:Alpha:渐变透明动画、Scale:渐变尺寸缩放动画、Translate:位置移动动画、Rotate:旋转动画

  变换动画又分为四种:Alpha:渐变透明动画、Scale:渐变尺寸缩放动画、Translate:位置移动动画、Rotate:旋转动画

2.1Alpha:渐变透明动画

  (1)fromAlpha:动画起始时透明度 (0.0表示完全透明,1.0表示完全不透明)

  (2)toAlpha:动画终止时的透明度 (0.0表示完全透明,1.0表示完全不透明)

2.2Scale:渐变尺寸缩放动画

  (1)fromXScale,toXScale分别是起始和结束x坐标上的伸缩尺寸->长度变化范围 0-1

  (2)fromYScale,toYScale分别是起始和结束y坐标上的伸缩尺寸->长度变化范围 0-1

  (3)pivotX,pivotY分别为伸缩动画相对于View的左上角加设置的数值->可以是整数、百分数、百分数p

         (3.1)若属性值为50,表示在当前View左上角的X轴左边加上50px的位置为旋转点的X坐标,

         (3.2)50%表示在当前View左上角的X坐标加上自己宽度的50%作为旋转点的X坐标,

         (3.3)50%p(p表示parent)表示在当前View左上角的X轴坐标加上父控件宽度的50%作为旋转点的X坐标。

2.3 Translate:位置移动动画

  (1)fromXDelta,fromYDelta分别是起始时x,y的坐标

  (2)toXDelta,toYDelta分别是结束时x,y的坐标

2.4 Rotate:旋转动画

  (1)fromDegrees起始的角度  ->0.0  -  360.0

  (2)toDegrees终止的角度

  (3)pivotX,pivotY分别为旋转动画相对于View左上角的坐标开始的位置

2.5 Set:组合动画 

 可同时包括上四种动画效果,相同属性可以提出

2.5.1 公用的api

需要设置xmlns:android="http://schemas.android.com/apk/res/android"

动画集合set 设置xmlns时,设置重复次数与重复方式时,需要给每一个动画加xmlns,在每一个动画设置重复次数与重复方式

· android:duration        动画持续时间,以毫秒为单位

· android:fillAfter          如果设置为true,控件动画结束时,将保持动画最后时的状态(这里的结束指的是自然播放的结束不是手动cancel)

· android:fillBefore      如果设置为true,控件动画结束时,还原到开始动画前的状态(这里的结束指的是自然播放的结束不是手动cancel)

· android:fillEnabled    与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态

· android:repeatCount 重复次数

· android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

· android:interpolator  设定插值器,其实就是指定的动作效果

【详细参考:http://t.csdn.cn/5XSYj】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值