我想点击一个按钮后以指定动画显示dialogfragment,该dialogfragment从左侧滑动到右侧,且不占据整个屏幕,当我点击dialogFragment外的区域时,它将以相反方向的动画(从右到左)消失。这样的操作合理吗?如果我想实现类似的操作,应该怎么做?非常感谢您的帮助。
首先定义适当的动画,如下所示,并将它们放在anim文件夹中。
从左侧滑入:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="top">
<translate
android:duration="400"
android:fromXDelta="-100%p"
android:toXDelta="0%p" />
<alpha
android:duration="400"
android:fromAlpha="0.8"
android:toAlpha="1.0" />
</set>
Slide_out_to_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="bottom">
<translate
android:duration="400"
android:fromXDelta="0%p"
android:toXDelta="100%p" />
<alpha
android:duration="400"
android:fromAlpha="1.0"
android:toAlpha="0.2" />
</set>
然后定义自定义样式,定义进入/退出动画:
在您的style.xml
中:
<!-- Animations for Dialogs-->
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_in_from_left</item>
<item name="android:windowExitAnimation">@anim/slide_out_to_right</item>
</style>
在你的DialogFragment中重写onActivityCreated
方法并设置动画:
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
}