PopEnter动画在导航组件中不起作用
我想在两个片段之间以两种方式进行幻灯片过渡。我现在所做的是在输入动画和 popExit 中工作,而不是 popEnter(前一个片段显示没有过渡)。
我的过渡动作如下所示:
<action
android:id="@+id/action_welcomeFragment_to_interfaceScalePickFragment"
app:destination="@id/interfaceScalePickFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
我的自定义动画之一看起来像那样(它是 slide_out_left)
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="500" android:fromXDelta="0%" android:toXDelta="-100%"/>
<alpha android:duration="500" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>
例如,我的欢迎片段是这样写的:
package com.delet_dis.elementarylauncher.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.findNavController
import com.delet_dis.elementarylauncher.R
import com.delet_dis.elementarylauncher.databinding.FragmentWelcomeScreenBinding
class WelcomeFragment : Fragment() {
private lateinit var binding: FragmentWelcomeScreenBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return if (savedInstanceState == null) {
binding = FragmentWelcomeScreenBinding.inflate(layoutInflater)
binding.root
} else {
view
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (savedInstanceState == null) {
binding.getStartedButton.setOnClickListener {
requireActivity().findNavController(R.id.fragmentContainerView)
.navigate(R.id.action_welcomeFragment_to_interfaceScalePickFragment)
}
}
}
}
我尝试在 Canary 版本中重写项目(因为最近发布版本中没有显示主机,但在 Canary 中一切正常)。
我也尝试用工作室构建的片段替换第一个片段(欢迎),重复没有动画的错误