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】