Android中windowTranslucentStatus与windowTranslucentNavigation的一些设置(转)
在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的一些设置(转)的更多相关文章
- Android中TextView和EditView常用属性设置
Android中TextView和EditView常用属性设置 点击跳转
- Android中直播视频技术探究之---摄像头Camera视频源数据采集解析
一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,A ...
- Android中Listview点击item不变颜色以及设置listselector 无效
Android中Listview点击item不变颜色以及设置listselector 无效 这是同一个问题,Listview中点击item是会变颜色的,因为listview设置了默认的listsele ...
- Android中的颜色设置
1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如 public static final class color { public static final int lightb ...
- android中ColorStateList及StateListDrawable设置Selector
写过android的代码相信大家对Selector并不陌生吧,下面来看看这段xml文件是如何定义的 <?xml version="1.0" encoding="ut ...
- Android中设置TextView的颜色setTextColor
tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColo ...
- Android中如何设置RadioButton在文字的右边,图标在左边
from:http://blog.csdn.net/sunnyfans/article/details/7901592?utm_source=tuicool&utm_medium=referr ...
- Android中xml设置Animation动画效果详解
在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...
- 【原创】如何在Android中为TextView动态设置drawableLeft等
如何在Android中为TextView动态设置drawableLeft等 两种方式: 方式1:手动设置固有边界 Drawable drawable = getResources().getD ...
随机推荐
- ubuntu装软件包
查找包 aptitude search pkgName pkgName可以有多个(空格分隔) ffmpeg sudo add-apt-repository ppa:kirillshkrogalev/f ...
- 如何学习 JavaScript?
转自:https://www.zhihu.com/question/21064817 首先要说明的是,咱现在不是高手,最多还是一个半桶水,算是入了JS的门. 谈不上经验,都是一些教训. 这个时候有人要 ...
- 为什么需要注册OCX控件?
转自:http://searchwindevelopment.techtarget.com/answer/Why-do-I-need-to-register-OCX-controls OCX's ha ...
- 《精通Spring 4.x 企业应用开发实战》学习笔记
第四章 IoC容器 4.1 IoC概述 IoC(Inverse of Control 控制反转),控制是指接口实现类的选择控制权,反转是指这种选择控制权从调用类转移到外部第三方类或容器的手中. 也就是 ...
- hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
N根短木棒 能够拼成几根长度相等的长木棒 求长木棒的长度 如果答案不止一种 输出最小的 Sample Input95 2 1 5 2 1 5 2 141 2 3 40 Sample Output65 ...
- k短路([SDOI2010]魔法猪学院)
题解: A*来做 首先对终点向外面跑一遍最短路 然后从起点开始dfs 按照估价函数建立小根堆 每次取出最小的那个继续更新 每次更新到终点cnt++直道cft=k为止 那估价函数怎么弄呢? 其实就是终点 ...
- 和组合数有关的dp
1. UVaLive 7143 Room Assignment 用dp[i][r]表示,前i个盒子已经放完了,手上还拿着r对同色球. 状态转移方程为:dp[i+1][r-a-b] = dp[i][r] ...
- Asp.Net Core 2.0 项目实战(3)NCMVC角色权限管理前端UI预览及下载
Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...
- 微信小程序介绍
1.什么是微信小程序 是一种不需要下载即可使用的应用,实现了“触手可及的梦想”,用户扫一扫或者搜一下即可打开. 免安装 操作更接近原始的APP 必须在微信中使用 2.宣传方式 小程序搜索入口 附近的小 ...
- unity pattern not found
在之前破解成功再次破解或者电脑上多个版本Unity往往会导致破解失败. 破解失败解决方法如下: 先用破解软件破解,虽然是破解失败但是还是可以在破解的目录下找到那个ulf文件. 这时候直接打开unity ...