如我的问题所述,我希望在向上滑动时能够滑动一个小片段。它基本上应该像AndroidStudio提供的导航抽屉一样工作。问题在于导航抽屉可以从片段的左侧或右侧滑动,但不能从底部滑动。由于没有“ onSwipeUp”事件之类的东西,所以我不知道如何可以创建解决方法。那么有可能从底部向上滑动一个片段,如果可以,怎么办?
如下更改您的片段交易:
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>
我希望这会对您有所帮助。
您应该查看此库,https://github.com/gokhanakkurt/android-menudrawer。它提供了一个底部抽屉,显示“ onSwipeUp”。我不知道您打算将其用作简单的底部抽屉还是要对其进行进一步的编辑。
输出
如何从底部滑动片段
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>