为此,您需要 2 个动画并将其放在 res/anim 文件夹中
- slide_up_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="50%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime"/>
2.slide_out_down.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="100%p" />
现在您必须在 style.xml 中创建自定义样式
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_up_dialog</item>
<item name="android:windowExitAnimation">@anim/slide_out_down</item>
</style>
接下来是扩展android Theme。对话框主题在同一个style.xml中,并引用我们创建的自定义样式。
<!-- Animation for dialog box -->
<style name="DialogSlideAnim" parent="@android:style/Theme.Dialog">
<item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style>
最后,在创建这样的对话框时调用此样式。
dialog = new Dialog(new ContextThemeWrapper(this, R.style.DialogSlideAnim));
是的……现在对话框可以滑动了……!!
更新:
正如@MichealP 建议的那样,这会将窗口放在底部
getWindow().setGravity(Gravity.BOTTOM);
并修改样式以去除标题和背景
<item name="android:windowBackground">@null</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
正如@sikni8 建议的那样,这将使黑色边框透明
getWindow().setBackgroundDrawableResource(android.R.color.transparent);