我有两个片段(A,B),我可以在其中交换;我想要实现的是每次交换它们时它们之间的向上/向下滑动动画。
我尝试使用两个对象动画像这样:
//slide up
<objectAnimator
android:interpolator="@android:interpolator/linear"
android:propertyName="translationY"
android:valueType="intType"
android:valueFrom="1920"
android:valueTo="0"
android:duration="1000" />
//Slide down
<objectAnimator
android:interpolator="@android:interpolator/linear"
android:propertyName="translationY"
android:valueType="intType"
android:valueFrom="0"
android:valueTo="1920"
android:duration="1000" />
但是它没有工作,因为两个片段重叠了。那我怎么做动画呢?
片段A:
class FragmentA : Fragment(){
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
buttonA.setOnClickListener {
activity.supportFragmentManager.beginTransaction()
.setCustomAnimations(R.animator.slide_dowm, R.animator.slide_up)
.replace(R.id.container, FragmentB()).commit()
}
}
}
片段B:
class FragmentB : Fragment(){
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
buttonB.setOnClickListener {
activity.supportFragmentManager.beginTransaction()
.setCustomAnimations(R.animator.slide_up, R.animator.slide_down)
.replace(R.id.container, FragmentB()).commit()
}
}
}
2条答案
按热度按时间q43xntqr1#
Google发布了新的Navigation UI库
因此,现在我们可以从一个your_named_navigation. xml资源执行相同的片段转换(main〉res〉navigation〉your_named_navigation. xml),
这是我实现的一个片段代码:
它还有助于处理对后退按钮和向上按钮的点击,
因此,在我们项目中实现NavigationUi之后,我们可以从firstFragment示例调用Navigation.findNavController方法
下一个谷歌的Codelab帮了我,也许能帮到你,问候
k4ymrczo2#
animator/slide_in_left.xml
animator/slide_out_right.xml
分类子类别
一些链接
Fragment transaction animation: slide in and slide out
How to apply a fade-in/fade-out animation when replacing a fragment