文档章节

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

Carbenson
 Carbenson
发布于 2015/09/08 17:36
字数 549
阅读 3349
收藏 2

第一步:创建对话框

MyDialog mydlg=new MyDialog(context);

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

Window dlgwindow=mydlg.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);//这里设置的可以在桌面中显示对话框

实现这一步还需要获取权限

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

设置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:windowBackground">@drawable/selector_dialog_bg</item><!--对话框背景透明-->

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

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

其它:

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

mydlg.setCanceledOnTouchOutside(true);

//动态设置动画

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

PS:对于setType为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT

即系统窗口,是不支持通过getWindow()直接设置动画的,不过,天无绝人之路,可以在对话框里面的view设置动画

eg:

Animation ani=AnimationUtils.loadAnimation(getContext(), R.anim.xxx_anim);

view.setAnimation(ani);


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

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

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


© 著作权归作者所有

Carbenson
粉丝 19
博文 271
码字总数 84864
作品 0
广州
程序员
私信 提问
利用Activity实现一个简单的可输入对话框

1、需求分析 在应用中这样那样的评论总是少不了的,有的应用是在底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交;而有的虽然也放置了EditText,但仅仅是一个“...

Lindroid
2017/10/23
468
0
Android Spinner

下拉列表(Spinner)是一个每次只能选择所有项中一项的部件。它的项来自于与之相关联的适配器中。 XML Attributes Attribute Name Related Method Description android:gravity setGravity(...

amigos_wu
2012/06/17
1K
0
PWA(Progressive Web App)入门系列:安装 Web 应用

前言 在传统的 Web 应用中,通常只能通过在浏览器的地址栏里输入相应的网址才能进行访问,或者把网页地址创建到桌面上通过点击,然后在浏览器里打开。 传统模式下,图标、启动画面、主题色、...

快乐平方
07/03
0
0
Android软件开发之盘点所有Dialog对话框大合集(一)

对话框大合集 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6601613 雨松MOMO带大家盘点Android 中的对话框 今天我用...

彭博
2012/03/09
117
0
Android软件开发之盘点所有Dialog对话框大合集(一)

对话框大合集 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6601613 雨松MOMO带大家盘点Android 中的对话框 今天我用...

晨曦之光
2012/03/07
368
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部