Android 沉浸状态
来源:互联网 发布:南京润和软件 编辑:程序博客网 时间:2024/06/02 03:57
一. 介绍
Android4.4之前Android手机的应用状态栏都是黑色的比较难看,google在Android4.4以上之后提供了设置状态栏的方法,支持沉浸式状态栏的App的界面显得逼格更高一点。
二.实际使用
1.在代码中应用
在4.4中直接使用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
在5.0以上使用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}
在6.0上以上设置字体颜色
大部分手机默认状态栏字体颜色是白色的,如果Toolbar或者界面头部的颜色较浅,那么状态栏上白色的字看不怎么清楚。Android 6.0以后,我们可以使用代码将状态栏字体的颜色设置为黑色了,代码如下:
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);添加之后遇见的问题
(1)输入框软键盘弹出把toolbar顶没了
主要是fitsSystemWindows = “true”属性导致
解决FLAGTRANSLUCENTSTATUS导致输入框被软键盘覆盖的解决方案
代码如下:
public class AndroidBug5497Workaround { public static void assistActivity(View content) { new AndroidBug5497Workaround(content); } private View mChildOfContent; private int usableHeightPrevious; private ViewGroup.LayoutParams frameLayoutParams; private AndroidBug5497Workaround(View content) { if (content != null) { mChildOfContent = content; mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout() { possiblyResizeChildOfContent(); } }); frameLayoutParams = mChildOfContent.getLayoutParams(); } } private void possiblyResizeChildOfContent() { int usableHeightNow = computeUsableHeight(); if (usableHeightNow != usableHeightPrevious) { //如果两次高度不一致 //将计算的可视高度设置成视图的高度 frameLayoutParams.height = usableHeightNow; mChildOfContent.requestLayout();//请求重新布局 usableHeightPrevious = usableHeightNow; } } private int computeUsableHeight() { //计算视图可视高度 Rect r = new Rect(); mChildOfContent.getWindowVisibleDisplayFrame(r); return r.bottom; }}添加上面的类,然后在Activity的onCreate方法中的setContentView后面加上如下代码:
AndroidBug5497Workaround.assistActivity(findViewById(android.R.id.content));该方案的原理是,给界面的根布局设置一个监听器,当界面大小有变化的时候,如键盘弹出的时候,重新设置一下根布局的高度,再调用requestLayout对界面进行重绘。
CoordinatorLayout+AppBarLayout滑动出现问题
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.root_container_layout), new android.support.v4.view.OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { return insets.consumeSystemWindowInsets(); } });}
- Android 沉浸状态
- Android 沉浸式 完全沉浸
- 实现android的通知栏的背景和标题栏同步(沉浸状态)
- Android仿百度外卖APP首页状态/标题栏效果(沉浸式状态栏)
- Android 实现沉浸式状态,以及状态栏的隐藏和显示
- Android沉浸模式,沉浸式顶栏,变色龙状态栏
- Android 沉浸式全屏
- Android 沉浸式状态栏
- android 沉浸式 状态栏
- Android沉浸式
- Android沉浸模式
- Android 添加沉浸式
- android 沉浸式状态栏
- android沉浸式状态栏
- Android实现状态栏沉浸
- android 状态栏沉浸
- Android沉浸式状态栏
- android 4.4状态栏沉浸
- mysql实现ROW_NUMBER() over (PARTITION BY xx ORDER BY ** DESC)
- 最全面免费下载的Altium designer 3D元件封装库模型效果图库,可以直接在工程中应用
- 使用oracel 出现 java.lang.IllegalArgumentException: argument type mismatch解决
- [大数据-hadoop基础]window下编译hadoop2.7.4-eclipse mar2插件
- ffmpeg心得体会
- Android 沉浸状态
- ORACLE 12C 默认启动PDB
- 安卓系统app可用内存分析
- android+测试基础3(基本知识点)
- 欢迎使用CSDN-markdown编辑器
- public、protect、private继承方式 C++(转)
- Jenkins常用Plugins
- canvas3:绘制感叹号
- MySQL学习(数据库和表的基本操作)