我已经看到很多人描述了这种情况(例如(,但我不使用子片段。当我将动画添加到交易中时,当输入片段进入预期的输入动画时,退出的片段会立即消失。当我向后压时,同一件事发生了...退出的片段立即消失,原始片段以适当的pop Enter Animation进入。
我做错了什么?
我正在使用实现PreferenceFragmentCompat.OnPreferenceStartFragmentCallback
的AppCompatActivity
进行此操作,而我的活动的布局仅由framelayout组成。
override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean {
val fragment = supportFragmentManager.fragmentFactory.instantiate(
classLoader,
pref.fragment)
supportFragmentManager.beginTransaction()
.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
.add(R.id.fragment_wrapper, fragment)
.addToBackStack(null)
.commit()
return true
}
我所有的动画都是简单的,以相同的持续时间翻译动画,例如:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@integer/fragment_transition_time"/>
我正在使用androidx.preference:1.1.0-alpha05
。
使用ObjectAnimator
(DOCS(而不是TranslateAnimation
。