码迷,mamicode.com
首页 > 移动开发 > 详细

使用设置自定义对话框的大小,位置,样式以及设置在安卓桌面上弹出对话框

时间:2015-09-08 18:40:14      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

第一步:创建对话框

MyDialog mydlg=new MyDialog(context);

第二步:获取对话框的window实例,通过window实例来控制对话框出现的位置,大小和弹出时候的场景

Window dlgwindow=mydly.getWindow();

设置对话框最终显示位置

dlgWindow.setGravity(Gravity.TOP);

参数可以是Gravity.TOP(顶部),Gravity.BUTTON(底部),Gravity.LEFT(左边),Gravity.RIGHT(右边),Gravity.CENTER(居中)以及它们的组合

设置对话框大小

通过获取屏幕的大小,按照比例的方法设置比较便捷些

首先获得WindowManager实例

WindowManager m = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 

Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用

WindowManager.LayoutParams p = dlgWindow.getAttributes(); // 获取对话框当前的参数值

p.height = (int) (d.getHeight() * 0.5); // 高度设置为屏幕的0.5

p.width = (int) (d.getWidth() * 1); // 宽度设置为整个屏幕宽度

p.alpha = 0.5f; //设置对话框的透明度

dlgWindow.setAttributes(p);//

设置对话框在桌面上弹出

mydlg.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//这里设置的可以在桌面中显示对话框

设置window的样式;

通过style文件来设置对话框的样式

以下是一些常用的标签

 <item name="android:windowFullscreen">true</item>  <!--填充屏幕-->

<item name="android:windowFrame">@null</item> :Dialog的windowFrame框为无

<item name="android:windowIsFloating">true</item>:是否浮现在activity之上

<item name="android:windowIsTranslucent">false</item>:是否半透明

<item name="android:windowNoTitle">true</item>:是否显示title

<item name="android:windowBackground">@drawable/dia_bg</item>:设置dialog的背景

<item name="android:backgroundDimEnabled">false</item>: 背景是否模糊显示

 <item name="android:windowAnimationStyle">@style/xxx_ani</item>:设置对话框弹出和消失的动画

其它:

//设置点击对话框外部,可以关闭对话框

mydlg.setCanceledOnTouchOutside(true);

//动态设置动画

mydlg.getWindow().setWindowAnimations(R.style.dialog_ani);

//如何给对话框设置样式

如果是通过继承Dialog来自定义对话框,通过构造函数设置

eg:super(context,R.style.myDialog);


使用设置自定义对话框的大小,位置,样式以及设置在安卓桌面上弹出对话框

标签:

原文地址:http://my.oschina.net/carbenson/blog/502887

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!