我有一个活动,我正在展示36个微调器。有一个“上一个”和一个“下一个”按钮,点击这将改变一些微调器的选择。
我想实现一个滑动过渡,其中单击任一按钮会将页面滑出,然后滑入另一个。我是动画新手,我不知道如何做到这一点。请帮忙。
另外,我不想使用ViewPager,因为正如我所说,我的布局有36个微调器,每次初始化所有这些都很昂贵。
我基本上想要的是它看起来像一个新页面正在滑动,但实际上相同的布局得到“刷新”。
有人可以帮我吗?任何想法,资源或代码将不胜感激。谢谢!
答案 0 :(得分:2)
使用Fragment
子类来实现此目的。每次按下" next"按钮创建新的Fragment
子类实例通过Fragment.setArguments(Bundle)
向它传递必要的参数。使用Fragment
生命周期方法创建并填充您的视图。你可以阅读它here。创建Fragment
子类实例后,使用FragmentManager
将其添加到具有以下动画的活动中:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_enter, R.anim.fragment_exit, R.anim.fragment_pop_enter, R.anim.fragment_pop_exit);
transaction.replace(R.id.activity_main_content, new MyFragmentSubclass().addToBackStack(null)
.commit();
fragment_enter.xml
<set>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0" />
</set>
fragment_exit.xml
<set>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="-100%" />
</set>
fragment_pop_enter.xml
<set>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="-100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0" />
</set>
fragment_pop_exit.xml
<set>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="100%" />
</set>