花了很多时间寻找这个之后,我需要在这里请求帮助。片段和幻灯片上的动画
我有一系列代表“页面”的片段。 我想在转到他请求的下一页时给用户一个很好的动画效果。
我希望新的片段可以滑过上一个片段,隐藏它就好像它是一个实体页面一样。 目前我可以在新片段中滑动,但在转换过程中我们仍然可以看到底层片段。
这里是我的过渡定义 “幻灯片”:
<?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,试图避免支持库。
你如何将AnimatorListener添加到FragmentTransaction中?我试图解决这个相同的问题,我不能完全实现你的解决方案。 –
@ JessieA.Morris:解决方案并不那么直接。动画侦听器未连接到FragmentTransaction。您需要在每个片段中重写以下函数:'public Animator onCreateAnimator(int transit,boolean enter,int nextAnim)'。检查'nextAnim'是否不是0,然后:'Animator anim = AnimatorInflater.loadAnimator(getActivity(),nextAnim); anim.addListener([你的动画师监听器]);'。希望这可以帮助。 – Simon
可以请你分享一些解决方案的代码,我希望新的片段可以滑过旧的片段。 – Dory