android - 制作一个 fragment 滑入另一个 fragment 的动画?

标签 android android-fragments android-animation

我想在两个 fragment 之间切换,以便新 fragment 从底部滑入旧 fragment 顶部。滑动非常简单,使用

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

FragmentTransaction.setCustomAnimations()

问题是我的 fragment 没有纯色背景(我在具有半透明背景的 DrawerLayout 中这样做)。因此,当新 fragment 滑到旧 fragment 之上时,旧 fragment 仍然可见,直到动画结束,然后它突然从背景中消失。

为了解决这个问题,我希望旧 fragment 被“剪裁”,即它的高度应该是动画的,但它不应该被缩放或移动。这应该会产生正确的效果,但我不确定是否可以做到,如果可以,该怎么做?

最佳答案

我遇到了同样的问题,这是我解决问题的方法,请试试这段代码,我认为它对你有帮助:

例如

xml.布局

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate android:duration="150" android:fromXDelta="100%p" 
 android:interpolator="@android:anim/linear_interpolator"
 android:toXDelta="0" />
 </set>

Java 类

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();

MyFragment next = getMyFragment();

ft.add(R.id.MyLayout,next);
ft.setCustomAnimations(R.anim.slide_in_right,0);
ft.show(next);
ft.commit();

它工作正常,但旧的 fragment 仍然可见,使用此行它在动画期间不可见。

ft.remove(myolderFrag);

关于android - 制作一个 fragment 滑入另一个 fragment 的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568639/

相关文章:

Android 4.0.3 CursorAdapter 不会在 changeCursor 上填充 ListView

Java Android - 在 ImageView 中裁剪图像

java.lang.NullPointerException : Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference. 解析

具有多个图像淡入淡出动画的android imageview

未找到 Android L ViewAnimationUtils?

javascript - Android - 允许 XMLHttpRequest 到 API 级别 < 16 上的本地文件吗?

android - 底部导航 fragment 内的多个 Tab fragment

Android 将当前的 Fragment 类转换为 Activity 类

android - MVVM 设置 Recyclerview 适配器,其中包含 fragment 中的项目

java - Android RecyclerView : row swipe on click