android 状态栏一体化实现
16lz
2021-01-26
在android4.4以后,增加了状态栏和应用一体化的功能。
效果:
具体的实现思路:
一.设置状态栏背景透明。
1)代码设置(推荐)
2)style主题中设置(这里设置,最小的sdk必须是19以上)
二.引入SystemBarTintManager类,即开源库SystemBarTint 地址:https://github.com/jgilfelt/SystemBarTint
必须nineoldandroids.jar包
三.设置颜色
实现:
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setTranslucentStatus();setContentView(R.layout.activity_main);}/** * 设置状态栏背景状态 */private void setTranslucentStatus() {setStatusBarTranslucent(true);//setNavigationBarTranslucent(true);SystemBarTintManager tintManager = new SystemBarTintManager(this);tintManager.setStatusBarTintEnabled(true);tintManager.setStatusBarTintResource(R.color.title_bar_bg);// 状态栏的背景颜色(0表示无背景)//tintManager.setNavigationBarTintEnabled(true);//tintManager.setNavigationBarTintResource(R.color.title_bar_bg);//导航栏背景颜色(0表示无背景)}/** * 设置状态栏是否透明 * * @param isTransparent */private void setStatusBarTranslucent(boolean isTransparent) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT&& isTransparent) {Window win = getWindow();WindowManager.LayoutParams winParams = win.getAttributes();// 状态栏透明final int sBits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;winParams.flags |= sBits;win.setAttributes(winParams);}}/** * 设置导航栏是否透明 * * @param isTransparent */private void setNavigationBarTranslucent(boolean isTransparent) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT&& isTransparent) {Window win = getWindow();WindowManager.LayoutParams winParams = win.getAttributes();// 导航栏透明final int nBits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;winParams.flags |= nBits;win.setAttributes(winParams);}}
值得注意的是:当我们设置了状态栏透明后,布局默认会顶到状态栏上。如下图所示:
可以在style中设置
点击下载下载
更多相关文章
- android window 属性
- android知识点记录汇总(不断更新中)
- v7 包下 ActionBar 的一些基本使用
- Notification详解
- android studio慢慢熟悉-好用的 设置 查找框
- 程序猿媛一:Android滑动翻页+区域点击事件
- Android实现图片轮播切换实例代码
- Android(安卓)NDK编译选项设置
- Android竖式SeekBar实现及demo