android 状态栏一体化实现
2015-09-16 01:04
627 查看
在android4.4以后,增加了状态栏和应用一体化的功能。
效果:
具体的实现思路:
一.设置状态栏背景透明。
1)代码设置(推荐)
2)style主题中设置(这里设置,最小的sdk必须是19以上)
二.引入SystemBarTintManager类,即开源库SystemBarTint 地址:https://github.com/jgilfelt/SystemBarTint
必须nineoldandroids.jar包
三.设置颜色
实现:
值得注意的是:当我们设置了状态栏透明后,布局默认会顶到状态栏上。如下图所示:
可以在style中设置<item name="android:fitsSystemWindows">true</item>。
点击下载下载
效果:
具体的实现思路:
一.设置状态栏背景透明。
1)代码设置(推荐)
2)style主题中设置(这里设置,最小的sdk必须是19以上)
二.引入SystemBarTintManager类,即开源库SystemBarTint 地址:https://github.com/jgilfelt/SystemBarTint
必须nineoldandroids.jar包
三.设置颜色
实现:
public class MainActivity extends Activity { @Override protected 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中设置<item name="android:fitsSystemWindows">true</item>。
<style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:windowNoTitle">true</item> <!-- <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> --> <!-- 要不要考虑系统窗口的布局。 android:windowTranslucentStatus实现一体化的时候, 布局会自定填充为整个手机界面的布局,所以,如果要恢复默认布局可以设置android:fitsSystemWindows为true。 --> <item name="android:fitsSystemWindows">true</item> </style>
点击下载下载
相关文章推荐
- 在版本低于android21下使用material progressbar风格的进度条
- Android 线性布局分析一
- Android发展演变与开发环境搭建
- Getting Started With the NDK(Pro Android Apps Performance Optimization)
- Android 命令行编译、打包生成apk文件
- Android软键盘弹出时把布局顶上去的解决方法
- 【作业一】Android开发环境以及开发前的准备
- Android代码优化小技巧
- 移动应用平台的开发环境的发展演变-elcipse与android studio
- Android studio中正确引入so文件的方法
- Android AsyncTask完全解析,带你从源码的角度彻底理解
- Android中的复制粘贴
- Android工具类之图片流InputStream->(byte[])->Bitmap/Drawable
- Android 多媒体应用——MediaRecorder录制音频
- Android多媒体---SoundPool
- android服务
- Android滑动菜单的简单实现(SlidingPaneLayout)
- android SlidingUpPanel(二)
- Android emulator 不能使用的问题
- Android——Carema的使用