如何在android中从屏幕的底部向中间滑动对话框

我想用animation在我的活动上显示一个对话框。 我的对话框将从活动的底部滑到活动的中间。

/****编辑****/

我很抱歉我的问题不清楚。 我的意思是我的对话框将从下到中滑动,但是对话框的底部放置在活动的底部,就像下面的图片 在这里输入图像说明

为此,您需要2个animation并将其放在res / anim文件夹中

  1. 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中创build一个自定义样式

 <style name="DialogAnimation"> <item name="android:windowEnterAnimation">@anim/slide_up_dialog</item> <item name="android:windowExitAnimation">@anim/slide_out_down</item> </style> 

接下来是在相同的style.xml中扩展android Theme.Dialog主题,并给出我们创build的自定义样式的引用。

 <!-- Animation for dialog box --> <style name="DialogSlideAnim" parent="@android:style/Theme.Dialog"> <item name="android:windowAnimationStyle">@style/DialogAnimation</item> </style> 

最后,当你像这样创build对话框时调用这个样式。

 dialog = new Dialog(new ContextThemeWrapper(this, R.style.DialogSlideAnim)); 

yeap ….现在对话框准备滑动…..!

更新:

正如@MichealPbuild议,这将把窗口放在底部

 getWindow().setGravity(Gravity.BOTTOM); 

并修改样式以删除标题和背景

 <item name="android:windowBackground">@null</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> 

正如@ sikni8build议这将使黑色边框透明

 getWindow().setBackgroundDrawableResource(android.R.color.transparent); 

我在这里尝试了所有的答案,这对我不起作用。 我知道所有答案都是很久以前写的。 所以让我展示一下如何让它工作。 我跟着这篇文章。

简而言之:创buildres / anim / slide_up.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="@android:integer/config_mediumAnimTime" android:fromydelta="100%" android:interpolator="@android:anim/accelerate_interpolator" android:toxdelta="0"> </translate> </set> 

然后创buildres / anim / slide_bottom.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="@android:integer/config_mediumAnimTime" android:fromydelta="0%p" android:interpolator="@android:anim/accelerate_interpolator" android:toydelta="100%p"> </translate> </set> 

然后在res / values / styles.xml中添加样式

 <style name="DialogAnimation"> <item name="android:windowEnterAnimation">@anim/slide_up_dialog</item> <item name="android:windowExitAnimation">@anim/slide_out_down</item> </style> 

现在,您可以将此animation样式设置为如下所示的对话框或警告对话框。

 Dialog dialog = new Dialog(this); dialog.getWindow().getAttributes().windowAnimations = animationSource; 

要么,

 Dialog dialog = new Dialog(this); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.copyFrom(dialog.getWindow().getAttributes()); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.BOTTOM; lp.windowAnimations = R.style.DialogAnimation; dialog.getWindow().setAttributes(lp); 

我只展示了对话框的例子,但正如我之前所说的,你也可以使用这个方法来提醒对话框。

除了arunsoorya的回答:

更改slide_up_dialog.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" /> 

和slide_out_down.xml

 <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromYDelta="0%p" android:toYDelta="50%p" android:duration="@android:integer/config_longAnimTime"/>