想必大家都用过Dialog主题的Activity吧,用它来显示自定义对话框效果绝对是一个非常不错的选择。

即把activity交互界面以Dialog的形式展现出来,Dialog主题的Activity大小将以内容的宽高来决定

<activity android:name=”MainActivity” 
android:theme=”@android:style/Theme.Dialog”>
</activity>

可以看到设置为Theme.Dialog主题的activity显示效果,

是类似对话框的形式显示出来的,而背景则是这个Activity的上一个activity交互界面,

或者如果此Activity是程序第一个Activity,背景则是手机桌面

那么让我们自己做一个漂亮点的对话框形式的Activity

首先,要把Activity自带的标题去掉

使用 requestWindowFeature(Window.FEATURE_NO_TITLE); 语句

注意 需要在 setContentView(R.layout.main); 语句之前使用

画一个布局,具体效果看自己的Xml写的怎么样了

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
android:background="@drawable/duanxinbeijing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="0.0dip"
android:layout_weight="2.0">
<TextView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15.0dip"
android:layout_marginBottom="15.0dip"
android:layout_weight="1.0" />
</LinearLayout>
<TextView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15.0dip"
android:text="是否拨打电话"
android:textSize="20sp"
android:layout_weight="1.0" />
<View
android:background="#ffd1d1d1"
android:layout_width="fill_parent"
android:layout_height="2.0px" />
<LinearLayout
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/call_dialog_queren"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_marginTop="10.0dip"
android:layout_marginBottom="10.0dip"
android:src="@drawable/dialogqueren"
android:background="#0000"
android:layout_weight="1.0" />
<ImageButton
android:id="@+id/call_dialog_quxiao"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_marginTop="10.0dip"
android:layout_marginBottom="10.0dip"
android:src="@drawable/dialogquxiao"
android:background="#0000"
android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>

Activity关键代码:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //去除这个Activity的标题栏
setContentView(R.layout.main);
}

看效果图:

------------------------------------------------------------------------------------------------

当前,上述是我们大家一般使用的操作,但是,如果我们需要一个更加漂亮,用户体验更好的,比如说圆角对话框呢,而上述方法可以明显的看到当背景是圆角图片的时候,四个角的效果是十分差的。 android:theme=”@android:style/Theme.Dialog” 主题的Activity是方方正正的对话框样式的。

实现方法就是 自定义一个style ,在res/styles.xml 文件中

<style name="MyDialogStyle">
<item name="android:windowBackground">@android:color/transparent</item> 设置dialog的背景,此处为系统给定的透明值
<item name="android:windowFrame">@null</item> Dialog的windowFrame框为无
<item name="android:windowNoTitle">true</item>         是否显示标题
<item name="android:windowIsFloating">true</item> 是否浮现在activity之上
<item name="android:windowIsTranslucent">true</item> 是否半透明
<item name="android:windowContentOverlay">@null</item> 是否有覆盖
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 设置Activity出现方式
<item name="android:backgroundDimEnabled">true</item> 背景是否模糊显示
</style>

布局文件不变,再更改清单配置文件:

<activity
android:name="MainActivity"
android:theme="@style/MyDialogStyle" /> //主题设置为我们自定义的style
<activity

即可看到效果,是不是四个直角成为背景图片对应的圆角了

当然,它还是一个Activity,所以可以照常的对Activity里面的控件进行操作

Android项目实战(七):Dialog主题Activity实现自定义对话框效果的更多相关文章

  1. Android项目实战(九):CustomShapeImageView 自定义形状的ImageView

    一个两年前出来的第三方类库,具有不限于圆形ImageView的多种形状ImageView,项目开发必备 github下载地址:https://github.com/MostafaGazar/Custo ...

  2. android项目实战 --ListView 头部ViewPager广告轮询图效果

    看开源框架:https://github.com/tianshaojie/AndroidFine,里面有如下效果,特记录学习下,以后项目中用也好能够立刻想起来.   如上面所示,是常见项目中的图片轮训 ...

  3. Android项目实战(十五):自定义不可滑动的ListView和GridView

    不可滑动的ListView (RecyclweView类似) public class NoScrollListView extends ListView { public NoScrollListV ...

  4. Android项目实战(三十二):圆角对话框Dialog

    前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角 ...

  5. (转载)Android项目实战(三十二):圆角对话框Dialog

    Android项目实战(三十二):圆角对话框Dialog   前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...

  6. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结

    Android项目实战(二十七):数据交互(信息编辑)填写总结   前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: ...

  7. (转载)Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow

    Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow   这是一张QQ空间说说详情的截图. 分析: 1.点击右上角三个点的图标,在界面底部弹出一个区域,这个 ...

  8. Android项目实战--手机卫士开发系列教程

    <ignore_js_op> banner131010.jpg (71.4 KB, 下载次数: 0) 下载附件  保存到相册 2 分钟前 上传   Android项目实战--手机卫士01- ...

  9. Android项目实战(二十九):酒店预定日期选择

    先看需求效果图: 几个需求点: 1.显示当月以及下个月的日历 (可自行拓展更多月份) 2.首次点击选择"开始日期",再次点击选择"结束日期" (1).如果&qu ...

随机推荐

  1. 字体文件放入CDN服务器中,跨域问题(IIS版)

    Font from origin 'http:/XXXX' has been blocked from loading by Cross-Origin Resource Sharing policy: ...

  2. 如何将ToolBar 样式设置Title文字水平居中

    以下是我的activity.xml的代码,线性布局.<android.support.v7.widget.Toolbar         android:id="@+id/toolba ...

  3. ruby -- 问题解决(八)解决Paperclip::NotIdentifiedByImageMagickError

    好吧!又见 Paperclip::NotIdentifiedByImageMagickError,之前遇过一次... 最近又遇到一次,解决了之后,忘了写博客,然后再次遇到的时候,有一种被车撞到的节奏. ...

  4. sitemesh学习笔记(1)

    最近在学习web开发的时候,发现很多的页面都存在同样的导航栏,登陆栏,js,jQuery等等相同的元素.这样就感觉开发变得好臃肿啊,并且,有时候改一个元素,就要把所有包含这个元素的页面全部重新码一遍, ...

  5. JS魔法堂:那些困扰你的DOM集合类型

    一.前言 大家先看看下面的js,猜猜结果会怎样吧! 可选答案: ①. 获取id属性值为id的节点元素 ②. 抛namedItem is undefined的异常 var nodes = documen ...

  6. .Net魔法堂:史上最全的ActiveX开发教程——开发篇

    一.前言 在设计某移动内部自动化运维平台时,经综合考虑终端机性能和功能需求等因素后,决定采用B/S模式,并且浏览器通过ActiveX组件实现与服务器Agent作P2P的通讯.好处,整个平台以网页形式存 ...

  7. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  8. Web前端面试题集锦

    前端开发面试知识点大纲: 注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5927180.html )作者:wangwen896 HTML&CSS ...

  9. sprint演示Scrum 项目7.0

    1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉很好. 其他人可以了解你的团队在做些什么,并得到重要反馈. 演示是一种社会活动,不同的团队可以在这里相互交流,讨论各自的工作.这很有 ...

  10. 重构13天 抽取方法对象(Extract Method Object)

    理解:本文中的“提取方法对象”是指当你发现一个方法中存在过多的局部变量时,你可以通过使用“提取方法对象”重构来引入一些方法,每个方法完成任务的一个步骤,这样可以使得程序变得更具有可读性. 详解:如下代 ...