Android 支持片段推送弹出动画
我正在我的应用程序中使用v4支持片段和AppCompatActivityAndroid 支持片段推送弹出动画,android,android-fragments,android-animation,android-transitions,fragmentmanager,Android,Android Fragments,Android Animation,Android Transitions,Fragmentmanager,我正在我的应用程序中使用v4支持片段和AppCompatActivity loginUserFragment = new FragmentLoginUser(); mFragmentTransaction = CommonUtils.getFragmentLRTransaction(this); mFragmentTransaction.add(R.id.fragmentContainer, loginUserFragment, loginUserFragment.get
loginUserFragment = new FragmentLoginUser();
mFragmentTransaction = CommonUtils.getFragmentLRTransaction(this);
mFragmentTransaction.add(R.id.fragmentContainer, loginUserFragment, loginUserFragment.getClass().getName());
mFragmentTransaction.commit();
从左到右的片段事务:
public static FragmentTransaction getFragmentLRTransaction(FragmentActivity fa) {
FragmentTransaction ft = fa.getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(anim.animated_activity_slide_left_in, anim.animated_activity_slide_right_out, anim.animated_activity_slide_right_in, anim.animated_activity_slide_left_out);
return ft;
}
动画\u活动\u幻灯片\u左\u in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="-100%p"
android:toXDelta="0%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="-100%p"
android:toXDelta="0%p"
android:duration="1500"/>
动画\u活动\u幻灯片\u right\u out.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:duration="1500"/>
动画\u活动\u幻灯片\u right\u in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="1500"/>
动画\u活动\u幻灯片\u left\u out.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="-100%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="-100%p"
android:duration="1500"/>
推送或弹出动画均不起作用:(可以使用“平移”为活动设置动画,但不能使用“平移”为片段设置动画。对于片段,应使用“对象动画制作程序” 更新: 但正如@user3400729所指出的,支持片段管理器不能使用对象动画进行转换,但可以使用translate应用此动画 在本例中,我尝试了您的问题,发现动画工作正常,我所做的只是增加动画的持续时间,以便用户可以查看此动画 动画\u活动\u幻灯片\u左\u in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="-100%p"
android:toXDelta="0%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="-100%p"
android:toXDelta="0%p"
android:duration="1500"/>
动画\u活动\u幻灯片\u right\u out.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:duration="1500"/>
动画\u活动\u幻灯片\u right\u in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="1500"/>
动画\u活动\u幻灯片\u left\u out.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="-100%p"
android:duration="250"/>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="-100%p"
android:duration="1500"/>
希望它能帮助您..替换
MFFragmentTransaction.添加(…);
替换为MFFragmentTransaction.替换(…);
试试这个
下面列出的推送和弹出片段,
public void pushFragments(String tag, Fragment fragment,
boolean shouldAnimate, boolean shouldAdd) {
try {
if (shouldAdd)
mStacks.get(tag).push(fragment);
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
if (shouldAnimate)
ft.setCustomAnimations(R.anim.from_fade_in,
R.anim.from_fade_out);
ft.replace(R.id.realTabContent, fragment);
ft.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
public void pushFragments(String tag, Fragment fragment, Bundle args,
boolean shouldAnimate, boolean shouldAdd) {
try {
if (shouldAdd)
mStacks.get(tag).push(fragment).setArguments(args);
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
if (shouldAnimate)
ft.setCustomAnimations(R.anim.from_fade_in,
R.anim.from_fade_out);
ft.replace(R.id.realTabContent, fragment);
ft.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
public void popFragments() {
try {
Fragment fragment = mStacks
.get(GlobalFields.mCurrentTab)
.elementAt(mStacks.get(GlobalFields.mCurrentTab).size() - 2);
/* pop current fragment from stack.. */
mStacks.get(GlobalFields.mCurrentTab).pop();
/*
* We have the target fragment in hand.. Just show it.. Show a
* standard navigation animation
*/
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimations(R.anim.to_fade_in, R.anim.to_fade_out);
ft.replace(R.id.realTabContent, fragment);
ft.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
from\u fade\u in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="-100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%" />
</set>
来自_fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="-100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%" />
</set>
在.xml中淡入淡出
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="-100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%" />
</set>
到_fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="-100%"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%" />
</set>
您使用的appcompat的版本是什么?'com.android.support:appcompat-v7:23.0.1'在函数getFragmentLRTransaction中,是R.anim.animated\u activity\u slide\u left\u In还是anim.animated\u activity\u slide\u left\u In?支持库不支持objectAnimator:(对不起,我的错误。你是对的。支持库不支持objectAnimator。我将尝试解决你的问题。为此,你需要检查你的代码,因为它对我有效。