在iOS中,你可能发现页面会整体拉升到状态栏,整个页面效果就会显得更加的高端大气上档次,在Android4.4以后其实也有这种效果的实现,下面我就说一下在进行这种效果实现时碰到的一些坑,希望对大家有一些帮助吧。

首先来说一下关于这种效果的一些额外设置:

windowActionBar:这个应该大家都知道,在自定义的Theme中设置成false,就没有系统默认的那个菜单选项了。

windowNotTitle: 设置这个属性为true则不显示标题了

colorPrimary:这个属性是你的actiinbar的属性颜色

colorPrimaryDark:这个属性则是你的标题栏的颜色,你可以设置和你自定义的标题栏一个颜色,就可以达到以下这种效果

接下来我们看看windowTranslucentStatus属性与windowTranslucentNavigation属性的设置,首先,我们要知道,Android版本到4.4才会有个属性,所以说不管你是在代码中进行实现或者是在资源文件style中进行实现,
你都需要进行版本的控制。首先在资源文件中进行实现,你要创建一个新的文件夹,value-v19,在这个文件夹中创建
style文件进行编辑,在其中设置主题,定义属性
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
然后给你的activity设置这个style,第一个属性很明显就是可以拉升到顶部状态栏,并且定义顶部状态栏透明,这样你的页面就是一整张了,没有上面电池背景条之类的了,整个页面看上去会好很多,】
第二个属性,是设置你的虚拟键透明,这个虚拟键就是返回和菜单键等,现在有的手机会放到屏幕上,而有的是没有的。到这个时候,如果你的手机有虚拟键的话,你会发现问题来了,你会发现你的页面拉伸到了虚拟键的下面,
也就是页面填充了整个屏幕,不留一点空间了,如果你是列表的话,那么无所谓,并不影响操作和页面效果,如果你的是最下面有按钮的页面的话,你会发现这玩意就是一个坑啊,
因为你的按钮填充到了下面,你根本按不到,而且如果你设置了透明属性的话,你会发现虚拟键和你最下面的按钮都重合在一起,具体效果
图如下图所示:


然后你开始在style里改变两个属性的所有制测试,发现都没有什么卵用,我不知道还有没有其他的解决办法,反正当我做到这里的时候,认定了它就是一个巨坑。
在你的布局文件中设置fitsSystemWindows这个属性其实也不会拉升到最下面,但是这样的话。。。。连上面都不拉伸了,有什么意义,而且好像设置了以后,你设置的
colorPrimaryDark也会无效,也可能是我的水平不行,反正被这个地方坑了好久。
但是不要急,办法总是人想出来,在xml文件中进行设置既然不方便,不灵活,那么我们就试试去Java代码中设置这个属性。
根绝前面说的那个坑,我们先判断一下你的手机是否含有NavigationBar这个东西,就是虚拟键,判断代码如下

public static boolean isHaveNavigationBar(Context context) {

    boolean isHave = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
isHave = false;
} else if ("0".equals(navBarOverride)) {
isHave = true;
}
} catch (Exception e) {
Log.w("TAG", e);
} return isHave;
}
返回为true的话就不给他设置,反之设置,具体代码如下:

public static void transportStatus(Activity context){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        if (!isHaveNavigationBar(context))
            context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
}

这样就可以达到想要的效果了.

https://blog.csdn.net/zjt593688/article/details/52606980

Android中windowTranslucentStatus与windowTranslucentNavigation的一些设置(转)的更多相关文章

  1. Android中TextView和EditView常用属性设置

    Android中TextView和EditView常用属性设置 点击跳转

  2. Android中直播视频技术探究之---摄像头Camera视频源数据采集解析

    一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,A ...

  3. Android中Listview点击item不变颜色以及设置listselector 无效

    Android中Listview点击item不变颜色以及设置listselector 无效 这是同一个问题,Listview中点击item是会变颜色的,因为listview设置了默认的listsele ...

  4. Android中的颜色设置

    1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如 public static final class color { public static final int lightb ...

  5. android中ColorStateList及StateListDrawable设置Selector

    写过android的代码相信大家对Selector并不陌生吧,下面来看看这段xml文件是如何定义的 <?xml version="1.0" encoding="ut ...

  6. Android中设置TextView的颜色setTextColor

    tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColo ...

  7. Android中如何设置RadioButton在文字的右边,图标在左边

    from:http://blog.csdn.net/sunnyfans/article/details/7901592?utm_source=tuicool&utm_medium=referr ...

  8. Android中xml设置Animation动画效果详解

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  9. 【原创】如何在Android中为TextView动态设置drawableLeft等

    如何在Android中为TextView动态设置drawableLeft等   两种方式:   方式1:手动设置固有边界 Drawable drawable = getResources().getD ...

随机推荐

  1. Oracle中数值的计算

    运算符 含义 · +(加)   加法 · ||(加) 字符串相加 · -(减)   减法 · *(乘)   乘法 · /(除)   除法 · mod(模)返回一个除法的整数余数  例如,12 % 5 ...

  2. vim的基本用法

  3. 《JavaScript 高级程序设计》第四章:变量、作用域和内存问题

    目录 变量的引用 执行环境及作用域 作用域链延长 块级作用域 垃圾回收机制 变量的引用 当一个变量保存了基本数据类型时,此时对于变量的操作(赋值,运算)就是操作这个基本数据的本身,就算是赋值操作,赋值 ...

  4. 如何批量的在django中对url进行用户登陆限制

    参考URL: https://blog.csdn.net/hanshengzhao/article/details/79540306?utm_source=blogxgwz0 1,首先定义一个内部有装 ...

  5. 对MariaDB10.0的Sphinx进行扩展

    已修改过的文件:http://pan.baidu.com/s/1o8DHvkA 将这两个文件放到MariaDB的解压目录后,再进行安装 /usr/local/mariadb-10.0.28/stora ...

  6. 放弃WebView,使用Crosswalk做富文本编辑器

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/4100132.html 为什么放弃WebView Androi ...

  7. jquery数组(sort() 排序)

    HTML: <h3>字符串数组排序前</h3> <div id="show5"></div> <h3>排序后</h ...

  8. Linux 之 AT&T汇编语言 mov、add、sub指令、数据段

    mov指令的几种形式: mov 寄存器. 数据 mov ax,8888 mov 寄存器. 寄存器 mov bx,ax mov 寄存器. 内存单元 mov ax,[0] mov 内存单元.寄存器 mov ...

  9. 基于Spring Boot的微服务搭建

    环境: 项目结构: 关键配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project ...

  10. PyQt5安装及ModuleNotFoundError: No module named 'PyQt5'问题解决

    PyQt5安装及ModuleNotFoundError: No module named 'PyQt5'问题解决     安装pyQt5费了很多的周折,不过现在还是安装好了,现在重新梳理一下整个安装过 ...