【问题标题】:How to create a fragment that slides in from bottom in Android Studio?如何在 Android Studio 中创建从底部滑入的片段?
【发布时间】:2015-07-10 10:15:57
【问题描述】:

正如我的问题中所述,我希望在向上滑动时能够向上滑动一个小片段。它基本上应该像 AndroidStudio 提供的 Navigation Drawer 一样工作。问题是导航抽屉可以在片段中从左侧或右侧滑动,但不能从底部滑动。 由于没有类似“onSwipeUp”事件,我不知道我是如何 可以创建一个解决方法。 那么是否可以从底部向上滑动片段?如果可以,如何?

【问题讨论】:

  • 叫做BottomSheet

标签: android android-fragments navigation-drawer


【解决方案1】:

如下更改您的片段交易:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_top);
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.commit();

这个slide_in_bottom.xml会设置你的fragment的入口动画:

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

而这个slide_out_top.xml会设置你的fragment的退出动画:

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

希望对你有帮助。

【讨论】:

  • 感谢您的回答!但是使用这种解决方案仍然存在检测何时调用动画的问题。
  • 有什么办法可以左右滑入滑出吗?我找不到为左右滑动提供默认动画的 Android。例如 - R.anim.slide_in_bottom 和 R.anim。 slide_in_top 可用,但 R.anim。 slide_in_left 和 R.anim。 slide_in_right 不是。
【解决方案2】:

你应该看看这个库,https://github.com/gokhanakkurt/android-menudrawer。它提供了一个显示“onSwipeUp”的底部抽屉。 我不知道您是否打算将其用作简单的底部抽屉,或者您想进一步编辑它。

【讨论】:

    【解决方案3】:

    输出

    如何从底部滑入Fragment

    currentFragment = DogDetailFragment.getInstance();//<-Your Fragment
    getSupportFragmentManager().beginTransaction()
                .setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_top, R.anim.slide_in_top, R.anim.slide_out_bottom)
                .replace(R.id.fragmentHolder, currentFragment, "DOGDETAIL")
                .addToBackStack("DOGDETAIL")
                .commit();
    

    按下后退按钮时如何反转动画?

    getSupportFragmentManager().popBackStack();
    

    R.anim.slide_in_bottom

    <set xmlns:android="http://schemas.android.com/apk/res/android" >
      <translate
        android:duration="500"
        android:fromYDelta="100%"
        android:toYDelta="0%">
      </translate>
    </set>
    

    R.anim.slide_out_top

    <set xmlns:android="http://schemas.android.com/apk/res/android" >
      <translate
        android:duration="500"
        android:fromYDelta="0%"
        android:toYDelta="-100%">
      </translate>
    </set>
    

    R.anim.slide_in_top

    <set xmlns:android="http://schemas.android.com/apk/res/android" >
      <translate
        android:duration="500"
        android:fromYDelta="-100%"
        android:toYDelta="-0%">
      </translate>
    </set>
    

    R.anim.slide_out_bottom

    <set xmlns:android="http://schemas.android.com/apk/res/android" >
      <translate
        android:duration="500"
        android:fromYDelta="0%"
        android:toYDelta="100%">
      </translate>
    </set>
    

    演示项目

    Woof Repository

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      相关资源
      最近更新 更多