自定义对话框去掉白色边框,方法如下:
1. 首先定义下面的style样式
styles.xml
<style name="dialog" parent="android:Animation"> <item name="@android:windowEnterAnimation">@anim/dialog_enter</item> <item name="@android:windowExitAnimation">@anim/dialog_exit</item> </style> <style name="dialog_no_border" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!-- 边框 --> <item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 --> <item name="android:windowIsTranslucent">false</item><!-- 半透明 --> <item name="android:windowNoTitle">true</item> <!-- 无标题 --> <item name="android:windowBackground">@drawable/dialog_login_bg</item><!-- 背景图片 --> <item name="android:backgroundDimEnabled">true</item> <!-- 模糊 --> <!-- 对话框弹出后,父窗体是否为全黑,需要跟backgroundDimEnabled配合使用 --> <item name="android:backgroundDimAmount">0.6</item> </style>
2. 用法
Dialog mDialog = new Dialog(mContext, R.style.dialog_no_border); Window mWindow = mDialog.getWindow(); mWindow.setGravity(Gravity.CENTER); //设置dilog显示的位置 mWindow.setWindowAnimations(R.style.dialog); //添加动画 mDialog.setContentView(view); //设置自己的布局文件 mDialog.show();附上对话框从屏幕下方飞入和飞出的动画
dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromYDelta="100%p" /> </set>dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:toYDelta="100%p" /> </set>
translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时X坐标上的位置
toXDelta 属性为动画结束时X坐标上的位置
fromYDelta 属性为动画起始时Y坐标上的位置
toYDelta 属性为动画结束时Y坐标上的位置
注意: 没有指定,默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
在这些属性里面还可以加上%和%p,例如:
android:toXDelta="100%",表示自身的100%,也就是从View自己的位置开始。
android:toXDelta="80%p",表示父层View的80%,是以它父层View为参照的。