Mil*_*ary 7 animation android fragment android-transitions
当我在片段事务中使用动画时,它工作正常,但下一个屏幕闪烁,这让我很恼火。我一直在寻找它,因为 2 天没有进展。
我正在使用此代码进行转换
public void moveToBaseSelect() {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.enter_from_right,R.anim.exit_to_left,R.anim.enter_from_left,R.anim.exit_to_right);
ft.replace(R.id.home_frame, new BaseSelectFragment(), HomeActivity.BASE_SELECT);
ft.addToBackStack(HomeActivity.BASE_SELECT);
ft.commit();
}
public void moveToLogin()
{
if(fragmentManager.getBackStackEntryCount()>=1 && fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount()-1).getName().equals(HomeActivity.LOGIN))
return;
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.enter_from_right,R.anim.exit_to_left,R.anim.enter_from_left,R.anim.exit_to_right);
ft.replace(R.id.home_frame, new LoginFragment(), HomeActivity.LOGIN);
ft.addToBackStack(HomeActivity.LOGIN);
ft.commit();
}
Run Code Online (Sandbox Code Playgroud)
动画文件
从左边进入
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="-100%p"
android:toXDelta="0%p" />
</set>
</set>
Run Code Online (Sandbox Code Playgroud)
从右边进入
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0%p" />
</set>
</set>
Run Code Online (Sandbox Code Playgroud)
向左退出
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="-100%p" />
</set>
</set>
Run Code Online (Sandbox Code Playgroud)
向右退出
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="100%p" />
</set>
</set>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一种替代方法,它使用 animator 而不是 anim 和 app.fragment 而不是 v4.fragment
但是我非常想知道如果我坚持使用动画方法有什么解决方案
删除动画文件中的 <set> 元素。我刚刚遇到了这个问题,当我删除它们时它就消失了。
我的动画xml:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0%"
android:toXDelta="-100%" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2975 次 |
最近记录: |