显示带有动画的DialogFragment

5
我想点击一个按钮后以指定动画显示dialogfragment,该dialogfragment从左侧滑动到右侧,且不占据整个屏幕,当我点击dialogFragment外的区域时,它将以相反方向的动画(从右到左)消失。这样的操作合理吗?如果我想实现类似的操作,应该怎么做?非常感谢您的帮助。
1个回答

12

首先定义适当的动画,如下所示,并将它们放在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;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接