我正在使用JetPack导航组件在片段之间导航。我在图表xml中的2个片段之间添加了幻灯片动画:
<action
android:id="@+id/action_Fragment_to_DetailsFragment"
app:enterAnim="@anim/slide_left"
app:popEnterAnim="@anim/slide_right"
app:destination="@id/DetailsFragment" />
问题是- b/c我正在使用导航组件,它使用fragmentManager.replace()
,而不是fragmentManager.add()
,而不是平滑的动画,我看到:
1.第一个片段消失
1.第二个片段的动画被触发,并将新片段滑动到屏幕
1.第二个片段出现在屏幕上。
和B/c我有不同的内容在两个屏幕上,它看起来有缺陷。我想实现的是“像在IOS中”,用户看到2层屏幕,从对方滑动。有没有办法实现它与导航组件,不支持“fragmentManager.add()
“?
我也试过
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
但情况也好不了多少。
3条答案
按热度按时间xxls0lw81#
最后我终于找到了做这件事的方法。
1.在图形中,设置动画:
1.创建动画:
slide_left.xml
slide_right.xml
wait_anim.xml
1.若要使其看起来更好,请在DetailsFragment中添加:
覆盖fun onViewCreated(视图:视图,已保存示例状态:包?){超级.onViewCreated(视图,已保存示例状态)视图兼容性.setTranslationZ(getView()!!,100 f)}
1.您也可以添加
sharedElementTransitions
以使动画更加独特。6fe3ivhb2#
如果有人想实现这个动画片段与进入和退出。
nav_slide_in_right.xml
nav_slide_out_left.xml
nav_slide_out_right.xml
nav_slide_in_left.xml
ar7v8xwq3#
到目前为止,我已经能够使用以下方法改进动画:
但仍然无法实现“类似IOS的”幻灯片动画。