Android中自定义Dialog对话框消除边距消除黑边框和显示动画

来源:互联网 发布:give up it give it up 编辑:程序博客网 时间:2024/06/10 15:57

这两天练习一个项目 显示对话框类似于QQ发表说说,宽是充满屏幕的 并且有上下的显示隐藏动画 但是AlertDialog默认显示模式是有边距的 用了很多方法怎么也消除不了AlertDialog的边距 如下图这样
这里写图片描述

后来选择使用Dialog消除了默认边距的效果 经过修改最终效果如下图
这里写图片描述
代码开始 注意是dialog 不是AlertDialog

动画效果 在res下创建anim文件
显示时候的动画

<translate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="300"    android:fromXDelta="0"    android:fromYDelta="80%p"    android:toXDelta="0"    android:toYDelta="0">    ></translate>

隐藏时的动画

<translate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="400"    android:fromXDelta="0"    android:fromYDelta="0"    android:toXDelta="0"    android:toYDelta="100%p">    ></translate>

在valuses创建style.xml

<resources>    //加入显示和隐藏动画    <style name="dialogWindowAnim" mce_bogus="1" parent="android:Animation">        <item name="android:windowEnterAnimation">@anim/dialog_in</item>        <item name="android:windowExitAnimation">@anim/dialog_out</item>    </style>    //消除边距和黑边框    <style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog">        <item name="android:windowFrame">@null</item>        <item name="android:background">@null</item>        <item name="android:windowNoTitle">true</item>    </style></resources>

代码

//创建dialog时加入消除边距和黑边框的style        Dialog dialog = new Dialog(this, R.style.ActionSheetDialogStyle);        //自定义布局        View view = View.inflate(this, R.layout.dialog_caogao, null);        dialog.setContentView(view);        //获取当前Activity所在的窗体        Window dialogWindow = dialog.getWindow();        //设置Dialog从窗体底部弹出        dialogWindow.setGravity(Gravity.BOTTOM);        dialogWindow.getDecorView().setPadding(0, 0, 0, 0);        WindowManager.LayoutParams lp = dialogWindow.getAttributes();        //设置宽        lp.width = WindowManager.LayoutParams.MATCH_PARENT;        //设置高        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;        dialogWindow.setAttributes(lp);        //显示对话框        dialogWindow.setGravity(Gravity.BOTTOM);        //设置dialog的动画效果        dialogWindow.setWindowAnimations(R.style.dialogWindowAnim);        dialog.show();
阅读全文
1 0
原创粉丝点击