我有一个活动,在其中加载片段A.片段A包含ListView,当单击列表项时,我加载另一个片段B代替片段A以显示列表视图项详细信息。在按钮上单击并按下设备后退按钮I它将加载前一个片段,即显示ListView的片段A.所有这一切都运行正常,但我想在背景或按钮点击上加载动画片段A.我是这样做的,但没有工作:
FragmentManager fsm = getSupportFragmentManager();
FragmentTransaction ftransaction = fsm.beginTransaction();
ftransaction.setCustomAnimations(R.anim.enter_from_left, R.anim.enter_from_left);
fsm.popBackStack();
ftransaction.commit();
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="700"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="700"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
答案 0 :(得分:24)
如果您需要背景动画,则需要使用:
setCustomAnimations(int enter, int exit, int popEnter, int popExit)
类似的东西:
setCustomAnimations(R.anim.enter_from_left, R.anim.enter_from_left,
R.anim.exit_to_left, R.anim.exit_to_left);
答案 1 :(得分:3)
就我而言
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.anim.slide_in_left,
android.R.anim.slide_out_right,
R.anim.slide_in_right,
R.anim.slide_out_left);
ft.replace(R.id.fragment_container, targetFragment).addToBackStack(null).commit();
这一行
ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right,
R.anim.slide_in_right, R.anim.slide_out_left);
会创造出完美的动画。
<强> slide_in_right 强>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="50%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
<强> slide_out_left 强>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-50%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
答案 2 :(得分:0)
使用导航组件也非常容易:
app:enterAnim="@anim/slide_in_left"
app:exitAnim="@anim/slide_out_right"
app:popEnterAnim="@anim/slide_in_right"
app:popExitAnim="@anim/slide_out_left"