首页 > 学院 > 开发设计 > 正文

定制DialogActivity

2019-11-06 10:02:02
字体:
来源:转载
供稿:网友

android开发中,我们希望能够自定义个性化的Dialog,但是重绘Dialog组件又显得比较复杂。但是,如果我们能够将activity以对话框的形式展现,然后在activity的xml文件中配置我们想要的Dialog外观,这样不就可以完美达到我们的目标了么。 幸运的是,将activity变成dialog并不复杂,下面我们就来一探究竟:

使用系统Dialog主题 这个实现非常简单,只需要在androidmanifest文件中修改activity的主题即可,代码如下: <activity android:name=".DidlogActivity" android:theme="@android:style/Theme.Dialog"> </activity>

自定义Dialog主题样式 使用系统的Dialog主题虽然方便,但是不能满足我们自定义Dialog的需求。因此,我们不妨自定义Dialog主题样式,然后在androidmanifest文件中引用。在res/values/styles.xml文件中加入以下代码:

<style name="MyDialogStyle"><!--窗口背景,使用系统定义的透明--> <item name="android:windowBackground">@android:color/transparent</item> <!--设置windowFrame为空--> <item name="android:windowFrame">@null</item> <!--设置无标题--> <item name="android:windowNoTitle">true</item> <!--设置是否悬浮在其他avtivity上方--> <item name="android:windowIsFloating">true</item> <!--是否半透明--> <item name="android:windowIsTranslucent">true</item> <!--是否内容覆盖--> <item name="android:windowContentOverlay">@null</item> <!--弹出动画--> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <!--背景是否模糊化--> <item name="android:backgroundDimEnabled">true</item></style><activity android:name=".DidlogActivity" android:theme="@style/MyDialogStyle"></activity>

这样就能让acticity以Dialog的形式弹出了,至于弹出的对话框的内容只需要在xml文件中自由定制即可。

这里有一个小问题,DialogAcitivity的大小是根据内部组件的大小自匹配的,有时候我们可能想要自己设置弹出窗口的大小,可以通过下面代码可以实现:

Point size = new Point(); //保存屏幕宽和高WindowManager m = getWindowManager();Display d = m.getDefaultDisplay(); //为获取屏幕宽、高d.getSize(size);WindowManager.LayoutParams p = getWindow().getAttributes(); //获取对话框当前的参数值p.height = (int) (size.y * 0.8); //高度设置为屏幕的1.0p.width = (int) (size.x * 0.8); //宽度设置为屏幕的0.8p.alpha = 1.0f; //设置本身透明度p.dimAmount = 0.0f; //设置黑暗度getWindow().setAttributes(p);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表