首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android项目实战(七):Dialog主题Activity实现自定义对话框效果

Android项目实战(七):Dialog主题Activity实现自定义对话框效果

作者头像
听着music睡
发布于 2018-05-18 06:59:32
发布于 2018-05-18 06:59:32
4.1K00
代码可运行
举报
文章被收录于专栏:Android干货Android干货
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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写的怎么样了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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关键代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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 文件中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<activity
     android:name="MainActivity"
     android:theme="@style/MyDialogStyle" />  //主题设置为我们自定义的style
<activity

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-11-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android企业级实战-界面篇-1
计蒙从上班再次回到学校生活后,认识的很多学校软件系朋友通过校招拿到了大厂Android开发岗位的offer,计蒙因为学习是专科起点,到本科后算法部分缺陷极大,仅拿到一家大厂offer,由于个人好不容易回到校园生活,不想太早再次回到上班的日子,于是继续准备升学,为了不将Android遗忘,还是偶尔写写代码,也就有了此文章。
计蒙不吃鱼
2025/06/12
1070
Android企业级实战-界面篇-1
Android企业级实战-界面篇-6
切换效果在引用布局的文件中对相应view进行invisible/visible即可。
计蒙不吃鱼
2025/06/12
490
Android企业级实战-界面篇-6
Android企业级实战-界面篇-4
计蒙不吃鱼
2025/06/12
450
Android企业级实战-界面篇-4
Android企业级实战-界面篇-3
发表了此系列第二篇文章后,有粉丝要求更新,今天写第三篇,相对来说比较简单,可以分为两个部分,一个为分割线的实现,另一个是条形跳转框,需组合搭配使用,这两类在设置,个人中心等界面中使用非常广泛
计蒙不吃鱼
2025/06/12
470
Android企业级实战-界面篇-3
Android企业级实战-界面篇-2
前几天发表了此系列第一篇文章,比较受欢迎,一天涨的粉丝盖过一年的了,在粉丝的私信下,今天将第二篇赶出来,效果图结合第一篇展示,废话不多说,直接开始
计蒙不吃鱼
2025/06/12
660
Android企业级实战-界面篇-2
Android自定义Dialog对话框
前言 Android项目经常需要使用对话框来进行交互,本文将介绍一个简单自定义的Dialog案例 效果图 代码部分 自定义Dialog布局 <?xml version="1.0" encodin
sr
2019/05/23
1.6K0
Android应用底部导航栏(选项卡)实例
现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能。 我们先看下该demo实例的框架图: 其
欢醉
2018/01/22
1.6K0
Android应用底部导航栏(选项卡)实例
[android] 手机卫士自定义对话框布局
点击手机防盗,进行判断,如果没有设置密码,显示一个设置密码的对话框,如果已经设置密码了,弹出输入密码对话框
唯一Chat
2019/09/10
7000
[android] 手机卫士自定义对话框布局
Android如何制作漂亮的自适布局的键盘
  最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路。   这里最上面的titlebar高度固定,下面输入的金额高度也固定(当然也可以自适应),主要是中间的数字键盘,高度和宽度需要自适应。   最常见的解决方案是用线性布局,自适应当然是按比例,但布局中无%的概念,那就要用到layout_weight了,该属性的作用是决定控件在其父布局中的显示权重(具体概念就不多说了)。   这里用一个LinearLayout 将
欢醉
2018/01/22
1.2K0
Android如何制作漂亮的自适布局的键盘
Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow
这是一张QQ空间说说详情的截图。 分析: 1、点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2、当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3、当任意选了一个按钮或者点击了该区域以外的部分,该区域消失,灰色界面变回亮白色,并执行点击的按钮对应的操作 显然,这个功能我们需要用PopupWindow实现更好~ ------------------------------------------------------------------------------
听着music睡
2018/05/18
1.2K0
anndroid 模糊引导界面
先上两张图,后面补上代码 我们以前的写法是在需要显示模糊引导的地方,写一个布局,然后第一次使用的时候显示出来。但是这样做代码结构不清晰,所以我们有必要将这些View独立出来,写成一个自定义的View
xiangzhihong
2018/02/01
7970
anndroid 模糊引导界面
C#-Xamarin的Android项目开发(一)——创建项目
使用Xamarin开发安卓项目,首先需要安装VS2017以上版本。因为VS2017以上的版本,可以直接创建Xamarin项目。
Kiba518
2019/03/04
3.5K0
C#-Xamarin的Android项目开发(一)——创建项目
安卓自定义Dialog的实现
一、Dialog布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.andro
先知先觉
2019/01/21
1.1K0
项目需求讨论-Android 自定义Dialog实现步骤及封装
在项目中,我们会遇到各种各样的界面需求,比如对话框和选择框,都是会配合具体项目的UI界面来做,而不是说用自带的弹出框。比如下面在登录界面的二个对话框效果。都是我在做具体项目中所要求实现的:
用户2802329
2018/08/07
1.6K0
项目需求讨论-Android 自定义Dialog实现步骤及封装
相关推荐
Android企业级实战-界面篇-1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档