Activity设置全屏显示的两种方式及系统自带theme属性解析

        设置Activity隐藏标题栏、设置Activity全屏显示在我们开发中会经常用到,毕竟手机屏幕大小有限,有时候是为了显示更多的信息而舍弃一些不必要的界面开支,首当其冲的就是标题栏,接下来就是状态栏;有时候是为了界面的简洁和美观……不举例子了,相信你肯定遇到过这样的需求,直接入正题:

        设置隐藏标题栏、全屏显示常用的有2种方法(和Android开发中大多数属性的设置方法一样):

        (一)xml中静态注册

        在AndroidManifest.xml文件的相应Activity节点下设置其android:theme属性值,该属性值(使用系统theme值,自定义theme除外)一般以"@android:style/Theme."开头,如android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"。下边就来说说这些theme有哪些不同及各自的效果(以Android4.4.2为例):

        我们在界面上添加一个TextView辅助观察:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="全屏设置及Theme属性解析"
        android:textSize="20sp"/>    <!-- 这里只设置了字体大小,并未设置字体颜色 -->
        * 注意* 这里只设置了字体大小并未设置字体颜色,下边会涉及到

<activity
    android:name="com.wangj.fullscreen.TestActivity"
    android:label="@string/title_activity_test"
    android:theme="@android:style/下边说到的theme值"
    android:icon="@drawable/ic_launcher"
    android:screenOrientation="portrait" >    <!-- 添加android:theme属性 -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

        (1)<activity >……< />节点未指定theme属性时显示效果如下

        未设置theme属性

        (2)黑色主题

        Theme.Black黑色主题:标题栏灰色、不显示icon(即使设置了也不显示)、有状态栏、TextView字体反色:

        Theme.Black

        Theme.Black.NoTitleBar:黑色主题、无标题栏、有状态栏、字体反色:

        Theme.Black.NoTitleBar

        Theme.Black.NoTitleBar.Fullscreen:黑色主题、无标题栏、无状态栏、字体反色:

        Theme.Black.NoTitleBar.Fullscreen

        (3)白色主题(和黑色主题唯一不同就是颜色):

        Theme.Light白色主题:标题栏灰色、不显示icon(即使设置了也不显示)、有状态栏、TextView字体黑色:

        Theme.Light

        Theme.Light.NoTitleBar:白色主题、无标题栏、有状态栏、TextView字体黑色

        Theme.Light.NoTitleBar

        Theme.Light.NoTitleBar.Fullscreen:白色主题、无标题栏、无状态栏、Textiew黑字

        Theme.Light.NoTitleBar.Fullscreen

        从上边可以看出:"Theme"是一个域,"NoTitleBar"指无标题栏,"FullScreen"指无状态栏

        (4)墙纸

        Theme.Wallpaper:与黑色主题类似,只是北京变为手机墙纸图片

        Theme.Wallpaper

        同样,Theme.Wallpaper.NoTitleBar:同上,无标题栏

        Theme.Wallpaper.NoTitleBar.Fullscreen:同上,无标题栏、无状态栏

        (5)半透明

        Theme.Translucent:半透明(说是半透明,但看效果是透明的)

        Theme.Translucent

        同样的,Theme.Translucent.NoTitleBar:同上,去掉了标题栏

        Theme.Translucent.NoTitleBar.Fullscreen:同上,去掉了标题栏和状态栏

        (6)质朴风

        Theme.Holo( | .NoActionBar(难道在Holo中TitleBar改名了) | .NoActionBar .Fullscreen):质朴风,黑色背景蓝色标题栏底、标题栏可显示icon、TextView反色字( | 去掉标题栏 | 去掉标题栏和状态栏)

        Theme.Holo

        Theme.Holo.Light( | .NoTitleBar | .NoTitleBar.Fullscreen):质朴风,银色背景、标题栏可显示icon、TextView黑字( | 去掉标题栏 | 去掉标题栏和状态栏)

        Theme.Holo.Light

        Theme.Holo.Wallpaper( | .NoTitleBar | 没有.NoTitleBar .Fullscreen):墙纸背景质朴风,标题栏有蓝色底边( | 去掉标题栏 | 状态栏去不掉)

        Theme.Holo.Wallpaper

        *注意* 

        没有Theme.Holo.Black,Theme.Holo默认就是黑色背景的

        系统没有Theme.Holo.Translucent

        其实,看完上边大家只要记住Black、Light、Holo、Translucent、Wallpaper、NoTitleBar、NoActionBar、FullScreen……等关键字和其意义(更多关键字的功能有待探索),用的时候在系统列表里找相应组合就可以了,比如上边要隐藏标题栏的、要设置全屏的根据需要找相应的Theme就可以了。至于没有的也不能自己创造,只能自定义了。

        (二)Activity加载时设定

        在Activity的onCreate()方法中,在setContent()之前采用以下语句设置

this.requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏应用程序的标题栏,即当前activity的label 
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏android系统的状态栏
        * 注意* 必须在setContent()方法之前设置,否则没有效果,因为setContent方法设置"View绘制区域"所显示的组件,而状态栏、标题栏都是View绘制区之外的区域(应用区、屏幕),关于屏幕区域划分请参照 《Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取》

        好了,就这些吧,希望能够帮到各位,免去你花时间去尝试验证。感觉还不错就鼓励一下呗

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值