在花了相当多的时间搜索这个之后,我需要在这里请求帮助。
我有一系列片段,每个片段代表一个“页面”。 我想在进入他要求的下一页时为用户提供一个很好的动画效果。
我希望新片段滑过上一个片段,将其隐藏起来,好像它是一个可靠的页面。 目前我可以在新片段中滑动,但我们仍然可以在过渡期间看到底层片段。
这是我的“幻灯片放入”转换定义:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:duration="500"
android:propertyName="x"
android:valueFrom="-1280"
android:valueTo="0"
android:valueType="floatType" />
</set>
这是我的淡出过渡
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:propertyName="alpha"
android:duration="500"
android:valueFrom="1.0"
android:valueTo="0"
android:valueType="floatType" />
</set>
我将其应用于:
Fragment f = (Fragment)FragClass.newInstance();
FragmentTransactionft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.animator.fragment_slide_in, R.animator.fragment_fade_out);
ft.replace(R.id.fl_frame, f);
ft.commit();
我已经看到了我希望用ViewPager演示的那种效果 - 但我正在使用片段。 是否可以通过片段动画实现这种转换(只是从末尾显示的左侧位移入)? 或者可能是片段动画和属性动画的混合? - 尝试了这个,但它非常混乱。
我正在平板电脑上为Android 4.0及更高版本构建。
我不想为此使用ViewPager,试图避免使用支持库。
答案 0 :(得分:0)
经过大量的实验和测试,这是我采用的方法。
可能不是最好的,但对我有用。
这些是要遵循的步骤,其余的只是实现:-D
答案 1 :(得分:0)
我找到了一个明显比其他任何已提出的解决方案更好的解决方案。我做的是以下内容:
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
FragmentManager.BackStackEntry entry = manager.getBackStackEntryAt(manager.getBackStackEntryCount() - 1);
Fragment oldFragment = manager.getFragments().get(entry.getId());
ft.setCustomAnimations(R.anim.slide_left, R.anim.slide_left_out, R.anim.slide_right, R.anim.slide_right_out);
ft.hide(oldFragment);
ft.add(R.id.container, login).addToBackStack(null).commit();
这使得被删除的片段位于新片段下。按下后退按钮时看起来有点奇怪,但总的来说它要好得多。 : - )