下面是style的一些属性及其解释

    <style name="dialog_translucent" parent="@android:style/Theme.Dialog">        <item name="android:windowFrame">@null</item><!-- 边框 -->        <item name="android:windowIsFloating">true</item><!-- 是否悬浮在activity上 -->        <item name="android:windowIsTranslucent">false</item><!-- 半透明 -->        <item name="android:windowNoTitle">true</item><!-- 无标题 -->        <item name="android:windowBackground">@android:color/transparent</item><!-- 背景透明 -->        <item name="android:backgroundDimEnabled">false</item><!-- 模糊 -->        <item name="android:backgroundDimAmount">0.6</item><!-- 灰度 -->        <item name="android:windowContentOverlay">@null</item><!-- 对话框是否有遮盖 -->        <item name="android:windowAnimationStyle">@style/dialog_animation</item><!-- 弹出或者进入时的动画效果 -->        <item name="android:colorBackgroundCacheHint">@null</item><!-- 背景缓存颜色 -->            </style>

自定义对话框效果如下

styles.xml

     <style name="popupDialog" parent="@android:style/Theme.Dialog">        <item name="android:windowNoTitle">true</item>        <item name="android:windowBackground">@drawable/filled_box</item>        <item name="android:backgroundDimEnabled">false</item>        <item name="android:windowIsTranslucent">false</item>        <item name="android:backgroundDimAmount">0.6</item>        <item name="android:windowAnimationStyle">@style/dialog_animation</item>    </style>

filled_box.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" >    <solid android:color="#9000"/>    <stroke android:width="3dp" color="#ffff8080"/>    <corners android:radius="30dp"/>    <padding         android:left="10dp"        android:top="10dp"        android:right="10dp"        android:bottom="10dp"/></shape>

dialog_animation.xml

    <style name="dialog_animation">        <item name="android:windowEnterAnimation">@anim/fading_in</item>        <item name="android:windowExitAnimation">@anim/fading_out</item>    </style>

在anim目录下创建fading_in.xml,进入时候的淡入效果

<?xml version="1.0" encoding="utf-8"?><set     xmlns:android="http://schemas.android.com/apk/res/android">    <alpha         android:duration="500"        android:fromAlpha="0.1"        android:toAlpha="1.0"        /></set>

fading_out.xml淡出效果

<?xml version="1.0" encoding="utf-8"?><set     xmlns:android="http://schemas.android.com/apk/res/android">    <alpha         android:duration="500"        android:fromAlpha="1.0"        android:toAlpha="0.1"        /></set>

showVerify方法,效果如上面图所示

  private void verifyDialog(String msg)        {            final Dialog dialog = new Dialog(MainActivity.this, R.style.popupDialog);            dialog.setContentView(R.layout.verify_dialog);            dialog.setCanceledOnTouchOutside(false);            dialog.setCancelable(false);            TextView message = (TextView)dialog.getWindow().findViewById(R.id.messageTxt);            Button okBtn = (Button)dialog.getWindow().findViewById(R.id.dismissBtn);            message.setText(msg);            okBtn.setOnClickListener(new OnClickListener() {                                @Override                public void onClick(View v) {                    if(dialog!=null && dialog.isShowing())                    {                        dialog.dismiss();                    }                }            });            if(dialog!=null && !dialog.isShowing())            {                dialog.show();            }        }

如果是想把整个activity做成类似于微博的new feature透明背景样式,如图

上面的图是透明背景,透明颜色可以自己定义

styles.xml

    <style name="activity_translucent">        <item name="android:windowBackground">@drawable/filled_activity_bg</item>        <item name="android:backgroundDimEnabled">false</item>        <item name="android:windowNoTitle">true</item>        <item name="android:windowIsTranslucent">false</item>        <item name="android:windowContentOverlay">@null</item>        <item name="android:windowAnimationStyle">@style/dialog_animation</item>        <item name="android:colorBackgroundCacheHint">@null</item>        <item name="android:backgroundDimAmount">0.6</item><!-- 灰度 -->    </style>

如果想设置的不是纯透明,改成灰色透明度的,可以设置windowBackground背景,下面是filled_activity_bg.xml,这样就是灰色的透明背景,类似于第一张图片

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" >    <solid android:color="#9000"/>    <stroke color="#ffff8080"/></shape>

如果不做任何灰度处理,效果如上图,可以设置背景色为透明

    <style name="activity_translucent">        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:backgroundDimEnabled">false</item>        <item name="android:windowNoTitle">true</item>        <item name="android:windowIsTranslucent">false</item>        <item name="android:windowContentOverlay">@null</item>        <item name="android:windowAnimationStyle">@style/dialog_animation</item>        <item name="android:colorBackgroundCacheHint">@null</item>    </style>

显示activity,代码如下。可以通过类似的原理制作遮罩层,其他的半透明能效果,例如popup菜单半透明效果等

Dialog dialog = new Dialog(MainActivity.this, R.style.activity_translucent);                dialog.setContentView(R.layout.transparent_layout);                dialog.show();

Android UI设计--半透明效果对话框及activity(可做遮罩层)的更多相关文章

  1. Android UI设计

    Android UI设计--PopupWindow显示位置设置 摘要: 当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的 ...

  2. 详解 “Android UI”设计官方教程

    我们曾经给大家一个<MeeGo移动终端设备开发UI设计基础教程>,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Andr ...

  3. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  4. 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar

    原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...

  5. shape和selector是Android UI设计中经常用到的

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  6. (转载)Android UI设计之AlertDialog弹窗控件

    Android UI设计之AlertDialog弹窗控件 作者:qq_27630169 字体:[增加 减小] 类型:转载 时间:2016-08-18我要评论 这篇文章主要为大家详细介绍了Android ...

  7. 移动周报:十款最实用的Android UI设计工具

    上一周可以说是一个不断Mark周,从最实用的Android UI设计工具.免费移动应用测试框架推荐,到HTML5开发框架等等,各种开发工具.框架精彩丰呈,看得小伙伴们是不亦乐乎.当然,还有不容错过的M ...

  8. Android UI设计的基本元素有哪些

    在android app开发如火如荼的今天,如何让自己的App受人欢迎.如何增加app的下载量和使用量....成为很多android应用开发前,必须讨论的问题.而ui设计则是提升客户视觉体验度.提升下 ...

  9. 巧用Drawable 实现Android UI 元素间距效果

    源文地址: 巧用Drawable 实现Android UI 元素间距效果 在大部分的移动UI或者Web UI都是基于网格概念而设计的.这种网格一般都是有一些对其的方块组成,然后它们组合成为一个块.使用 ...

随机推荐

  1. 四、绘图可视化之Seaborn

    Seaborn-Powerful Matplotlib Extension seaborn实现直方图和密度图 import numpy as np import pandas as pd import ...

  2. 数据库-SQL语法:GROUP BY与HAVING

    注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里. 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用. grou ...

  3. java程序-类的高级特性

    创建Employee类,在类中定义三个属性:编号,姓名,年龄,然后在构造方法里初始化这三个属性,最后在实现接口中的定义的CompareTo方法,将对象按编号升序排列. 代码如下:(程序可能有些错误,方 ...

  4. h5快速制作工具-企业级. 非个人无水印

    Epub360 Epub是团队引入的专业级H5应用开发工具,能够快速制作出高质量的H5运营交互页面,具有动画控制.交互设定.社交应用和数据应用的特点,其制作过程就类似于制作一个PPT,比较容易上手. ...

  5. ios retain copy assign相关

    assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立了一 ...

  6. (59)zabbix拓扑图展示链路状况Link indicators

    Link indicators介绍 上一篇已经了解了如何配置zabbix map,也提到了如何连接两个map元素,这节我们来讲两个map元素之间的链路指示配置. 我们需要在链路上配置trigger,如 ...

  7. c++ 整数读入优化

    这个函数!!!! 它真的巨好用!!! 改了两天 换了两个版本的代码 都TLE了 然后尝试着在文件头加了这个替换了cin和scanf 结果意外地发现两个文件都突然能过了??? 太神奇了叭! 强烈安利! ...

  8. nw335 debian sid x86-64 -- 5 使用xp的驱动

    nw335 debian sid x86-64 -- 5 使用xp的驱动

  9. nginx+django+uwsgi+https 配置问题点

    - ssl 证书申请 申请域名的网站申请下载对应文件即可 - nginx  配置 https [root@VM_2_29_centos conf]# nginx -t nginx: [emerg] u ...

  10. pycharm的一些操作指令和技巧

    Alt+Enter 自动添加包Ctrl+t SVN更新Ctrl+k SVN提交Ctrl + / 注释(取消注释)选择的行Ctrl+Shift+F 高级查找Ctrl+Enter 补全Shift + En ...