Android 沉浸模式,状态颜色栏变化,状态栏和导航栏
作者:互联网
Android 4.4 UI体验之ImmersiveMode沉浸模式,状态颜色栏变化,状态栏和导航栏_ShareUs的专栏-CSDN博客
Toolbar+AppCompatActivity打造沉浸式体验;AppCompatActivity中嵌入ViewPager+Fragment.
Android 3.0之后,Google引入了ActionBar,想统一安卓应用的导航栏样式。但由于ActionBar难以定制,很大程度上限制了开发人员,比如标题文字大小、间距等不易实现个性化,很多开发者放弃了ActionBar的使用,而是使用普通的ViewGroup来封装自己的App Bar,或者使用JakeWharton大神的ActionBarSherlock库。
APP顶部导航Bar,JakeWharton大神的ActionBarSherlock库- https://github.com/JakeWharton/ActionBarSherlock
后来,自2014年Google I/O 上Material Design横空出世后,市场上的应用又逐步趋向了样式的风格统一,support library中很快就出来了Toolbar控件,一个定制化的ViewGroup,来完善ActionBar的使用,App Bar又迎来了春天。
android.support.v7.widget.Toolbar ,compile ‘com.android.support:appcompat-v7:23.3.0’
Android沉浸式状态栏,支持状态栏渐变色,纯色, 全屏,亮光、暗色模式,适配android 4.4 -10.0机型- https://github.com/Ye-Miao/StatusBarUtil
- 先把状态栏和导航栏都设置为沉浸式,然后通过在状态栏和导航栏的位置加一个自定义背景的 View 和应对复杂的业务场景。
Transparent statusbar and navigationbar- https://github.com/Zackratos/UltimateBar
// 控制状态栏颜色compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'-- 沉浸式状态栏和6.0权限申请框架
// 透明状态栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
if (android.os.Build.VERSION.SDK_INT > 18) {undefined
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// 创建状态栏的管理实例
SystemBarTintManager tintManager = new SystemBarTintManager(this);
// 激活状态栏设置
tintManager.setStatusBarTintEnabled(true);
// 激活导航栏设置
tintManager.setNavigationBarTintEnabled(true);
// 设置一个颜色给系统栏
tintManager.setTintColor(Color.parseColor("#FFFF6666"));
}
/**
* 隐藏虚拟按键,并且全屏
*/
protected void hideBottomUIMenu() {undefined
//隐藏虚拟按键,并且全屏
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
} else if (Build.VERSION.SDK_INT >= 19) {undefined
//for new api versions.
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
}
}
-- 系统虚拟按键, 隐藏系统虚拟键 Android
Android沉浸式以及虚拟键冲突的解决方法和隐藏状态栏、标题栏的实现- https://blog.csdn.net/qq_36255612/article/details/53463569
android沉浸式状态栏和虚拟按键- https://blog.csdn.net/bitter_2014/article/details/46439405
Android适配底部返回键等虚拟键盘的完美解决方案- https://blog.csdn.net/u012685888/article/details/78954523
android 系统虚拟键盘的收起与显示- https://blog.csdn.net/yeshennet/article/details/78492296
Android 虚拟按键与沉浸式的适配- https://blog.csdn.net/lingfeixiang/article/details/56665722
Android 沉浸式状态栏与华为虚拟按键的冲突处理- https://blog.csdn.net/macaopark/article/details/81356052
android沉浸式状态栏和虚拟按键- https://blog.csdn.net/bitter_2014/article/details/46439405
android沉浸式虚拟按键栏- https://www.jianshu.com/p/b8c8fee18d80
解决沉浸式状态栏底部导航与虚拟键冲突
if (Build.VERSION.SDK_INT >= 21) {undefined
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//为避免底部导航栏覆盖注释掉这一行
// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
// getWindow().setNavigationBarColor(Color.TRANSPARENT);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {undefined
actionBar.hide();
}
public static void adaptFullScreenUI (Window window) {undefined
if ( Build.VERSION.SDK_INT > 20 ) {undefined
View decorView = window.getDecorView ( );
int uiOptions = ( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN )
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE; // TODO
decorView.setSystemUiVisibility ( uiOptions );
// TODO
window.setStatusBarColor(Color.TRANSPARENT);
}
}
> Android 4.4 Immersive Mode(沉浸模式)
Android 4.4 Immersive Mode(沉浸模式):“沉浸模式”和“透明栏”.“支持沉浸模式”“沉浸状态栏”等等,和真正的“沉浸模式”,即 Immersive Full-Screen Mode 是一点关系都没有的。“沉浸模式”“沉浸状态栏”.真正的沉浸模式,指的是一种全屏模式,而你一般在开发者/爱好者/用户那里听到的“沉浸模式”绝大部分情况下指的是“半透明栏”。或者是 Android 5.0 之后加入的“全透明/变色栏”。至于所谓“沉浸式状态栏/导航栏”之类的描述,则完全是无稽之谈。
<!-- 在colors.xml 3F51B5 ; 303F9F ; cc0033 -->
<!-- AppCompatActivity 导航上的背景色-->
<color name="colorPrimary">#cc0033</color>
<!--沉浸式下通知栏上的背景色-->
<color name="colorPrimaryDark">#cc0033</color>
-- AndroidのUI体验之ImmersiveMode沉浸模式-- http://blog.csdn.net/bvin_/article/details/46660679
getActivity().getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
-- 管理系统UI之四:使用全屏沉浸模式(Using Immersive Full-Screen Mode)-- http://blog.csdn.net/chuyouyinghe/article/details/46984777
你说你看到了沉浸模式,你可能只是见到鬼了--http://www.woshipm.com/pd/164714.html
你这样玩过android沉浸式状态栏吗—教你玩出新花样-https://github.com/androidstarjack/MyStausBarFacoryTest
android沉浸式状态栏- https://github.com/gyf-dev/ImmersionBar
android沉浸式状态栏封装—教你玩出新花样- http://blog.csdn.net/androidstarjack/article/details/76401105
android状态栏背景及文字变色- https://github.com/hongyangAndroid/ColorTrackView
android标题栏、状态栏图标文字颜色及背景动态变化- https://blog.csdn.net/smileiam/article/details/73603840
android状态栏背景及文字变色- https://github.com/xiewenfeng/statusbartextcolorchange
Android状态栏微技巧,带你真正理解沉浸式模式- http://blog.csdn.net/guolin_blog/article/details/51763825
Android沉浸式状态栏实现- http://www.chinastor.org/gdcc/9281.html
Android沉浸式状态栏(透明状态栏)最佳实现- http://blog.csdn.net/android_technology/article/details/53614871
Android 沉浸式状态栏的实现- https://github.com/yazhi1992/Practice
-- CompatStatusBar集合了SwipeBackLayout,实现左滑关闭页面和沉浸式
(推荐)Android 沉浸式状态栏+左滑关闭页面的实现- https://github.com/xiaoyanger0825/CompatStatusBar
左划关闭页面SwipeBackLayout- https://github.com/ikew0ng/SwipeBackLayout
> Android 4.4新特性之开启全屏沉浸模式
getActivity().getWindow().getDecorView().setSystemUiVisibility;
getActivity().getWindow().getDecorView().getSystemUiVisibility;
setSystemUiVisibility(int visibility)方法可传入的实参为:
1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。
2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
Android4.4新特性又增加下面俩个:
View.SYSTEM_UI_FLAG_IMMERSIVE; View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
标签:沉浸,状态栏,SYSTEM,FLAG,UI,Android,View 来源: https://blog.csdn.net/u013620306/article/details/122667527