如何在android中从屏幕的底部向中间滑动对话框
我想用animation在我的活动上显示一个对话框。 我的对话框将从活动的底部滑到活动的中间。
/****编辑****/
我很抱歉我的问题不清楚。 我的意思是我的对话框将从下到中滑动,但是对话框的底部放置在活动的底部,就像下面的图片
为此,您需要2个animation并将其放在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中创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"/>