开发沉浸式状态栏功能在Android平台
发布时间
阅读量:
阅读量
Android中实现沉浸式状态栏的功能
1. 首先展示实际效果图片,实现沉浸式状态栏的设计方案主要包括两种途径,其一是基于Theme主题的配置方法,其二是通过编写代码来实现。若希望在多个页面中统一应用沉浸式状态栏效果,则采用主题配置的方式更为便捷;若仅需在单个页面中实现该效果,则编写代码的方式更加适用。当然,具体选择还需根据个人偏好而定。

2. 首先介绍主题的撰写方式
2.1 首先在res目录中创建values-v19和values-v21两个文件夹,其目的在于实现对Android不同版本系统的兼容性支持

2.2 随后,在对应的包内依次创建名为styles.xml的文件
2.2.1 在values-v19包中所包含的styles.xml文件内容如下:
<style name="AppTheme.TransparentStausBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item> //取消系统默认的actionBar
<item name="windowNoTitle">true</item> //取消actionBar的标题
<item name="android:windowTranslucentStatus">true</item> //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透明,安卓4.4才有
<item name="android:windowTranslucentNavigation">true</item>//设置虚拟键透明
</style>
java
运行
2.2.2 values-v21包内所包含的styles.xml文件内容如下:
<style name="AppTheme.TransparentStausBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item> //取消系统默认的actionBar
<item name="windowNoTitle">true</item> //取消actionBar的标题
<item name="android:windowTranslucentStatus">false</item> //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透明,安卓4.4才有
<item name="android:windowTranslucentNavigation">true</item> //设置虚拟键透明
<item name="android:statusBarColor">@android:color/transparent</item> //设置状态栏的颜色为透明
</style>
java
运行
2.2.3 在values包所包含的styles.xml文档中插入一个空白条目,用以发挥备用功能
<style name="AppTheme.TransparentStausBar" parent="AppTheme">
</style>
java
运行
2.2.4 最后一步操作需在相应的布局文件中进行添加,并在AndroidManifest.xml文件中进行引用
android:fitsSystemWindows="true"
java
运行


完成主题撰写的方式即视为达成目标
3.接下来将对编写代码的方法进行说明
private void initBar() {
getWindow().requestFeature(Window.FEATURE_NO_TITLE); //取消状态栏的标题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//判断SDK的版本是否>=21
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); //允许页面可以拉伸到顶部状态栏并且定义顶部状态栏透名
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | //设置全屏显示
View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT); //设置状态栏为透明
window.setNavigationBarColor(Color.TRANSPARENT); //设置虚拟键为透明
}
ActionBar actionBar = getSupportActionBar();
actionBar.hide(); //将actionBar隐藏
}
java
通过编写代码的形式实现了
Tip: 对于初学者而言,若存在不足之处还望多多包涵。如发现有不准确的地方,欢迎留言指出。
全部评论 (0)
还没有任何评论哟~
