android - 通过动画交换 Activity 中的 fragment

标签 android android-animation

我想通过动画在 Activity 中交换两个 fragment 。假设 PageA 用于 fragment A 和屏幕左侧,而 PageB 用于 fragment B,即屏幕右侧。现在我希望当我单击 pageA 上的按钮时,PageA 将通过一些过渡动画移动到屏幕的右侧。

我尝试了下面的代码来替换位置

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();

寻找线索。

提前致谢。

最佳答案

老问题,您可能已经想通了,但供将来引用:

当您通过代码替换 fragment 时,您可以使用以下方法设置自定义动画:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.fragment_container, newFragment, "fragment");
// Start the animated transition.
ft.commit();

以下是 slide_in_left 动画的示例:

<?xml version="1.0" encoding="utf-8"?>
<set>
  <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="-100%"
   android:toXDelta="0"
   android:interpolator="@android:anim/decelerate_interpolator"
   android:duration="500"/>
</set>

请注意,如果您使用的是兼容性库,则这是动画。相反,如果您使用的是原生支持 FragmentManager 的 SDK,那么您的动画将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<set>
  <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="x" 
    android:valueType="floatType"
    android:valueFrom="-1280"
    android:valueTo="0" 
    android:duration="500"/>
</set>

这是因为兼容性库不支持新的 objectAnimator 类型,而只实现了旧的动画框架。

关于android - 通过动画交换 Activity 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876126/

相关文章:

Android:执行后台操作的设计考虑

android - 转换 View 后,您按下以触发按钮按下的区域不会移动。你如何用 View 移动这个区域?

android - 在搜索栏中的两个连续进度点之间添加流畅的动画

android - 二进制XML文件第3行: Error inflating class animation-list

android - 翻译动画是如何工作的 : Android

android - Android终端模拟器中的权限被拒绝

java - 每当我单击“后退”/“主页”按钮时,代码的asynctask部分就会关闭/停止该应用程序

java - 如何将数据传递给 getView 方法

java - 第一个 Activity 仅适用于我的 Android 项目

java - 在 libGDX 中的矩形中绘制动画纹理