gpt4 book ai didi

android - fragment 之间的过渡动​​画

转载 作者:行者123 更新时间:2023-11-29 15:35:54 25 4
gpt4 key购买 nike

我有两个 fragment (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" />

但它不起作用,因为这两个 fragment 是重叠的。那么我该怎么做动画呢?

fragment 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()
}
}
}

fragment 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()
}
}
}

最佳答案

Google 发布了新的 Navigation UI图书馆

因此,现在我们可以从 your_named_navigation.xml 资源(main > res > navigation > your_named_navigation.xml)执行相同的 fragment 转换,

这是我实现的一段代码:

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@+id/first_fragment">

<fragment
android:id="@+id/first_fragment"
android:name="com.yourpackage.FirstFragment"
android:label="@string/title_first"
tools:layout="@layout/fragment_first">

<action
android:id="@+id/second_fragment_action"
app:destination="@id/second_fragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />

</fragment>

<fragment
android:id="@+id/second_fragment"
android:name="com.yourpackage.SecondFragment"
android:label="@string/title_second"
tools:layout="@layout/fragment_second">

<action ...next fragment/>

</fragment>

</navigation>

它还有助于处理后退按钮和向上按钮的点击,

因此,在我们的项目中实现 NavigationUi 之后,我们可以从我们的 firstFragment 实例调用 Navigation.findNavController 方法

myButton.setOnClickListener(View.OnClickListener {
//This opens our second fragment creating a stack of fragments
Navigation.findNavController(it).navigate(R.id.second_fragment_action)
})

下一个Google's Codelab帮助了我,也许可以帮助你,问候

关于android - fragment 之间的过渡动​​画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50414972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com