android应用中状态栏颜色和标题栏保持一致
2017-10-19 15:31
323 查看
谷歌在4.4之后允许开发者自定义状态栏的颜色,这是不错的体验。这里只谈代码的实现方式,配置到BaseActivity里,这样自定义的activity在继承BaseActivity后就都可以实现这样的效果了。
![](https://img-blog.csdn.net/20171019154009789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc2NDA1MzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
创建BaseActivity之后,在onCreate()方法中,setContentView()方法前做如下处理:
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.top_bg_color);//通知栏所需颜色
}
setContentView(R.layout.main_activity);
}
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
SystemBarTintManager需要引用三方的类库,在AS中可以直接输入SystemBarInt搜索。实现效果如图:
![](https://img-blog.csdn.net/20171019153723058?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc2NDA1MzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
但是实际上标题栏被提了上去,APP界面全屏了,状态啦遮挡了一部分APP的界面,所以还要做如下处理:在Activity布局文件的最外层添加属性:
android:fitsSystemWindows="true"这样就可以达到预期的效果。
创建BaseActivity之后,在onCreate()方法中,setContentView()方法前做如下处理:
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.top_bg_color);//通知栏所需颜色
}
setContentView(R.layout.main_activity);
}
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
SystemBarTintManager需要引用三方的类库,在AS中可以直接输入SystemBarInt搜索。实现效果如图:
但是实际上标题栏被提了上去,APP界面全屏了,状态啦遮挡了一部分APP的界面,所以还要做如下处理:在Activity布局文件的最外层添加属性:
android:fitsSystemWindows="true"这样就可以达到预期的效果。
相关文章推荐
- Android应用改变状态栏颜色和APP风格保持一致
- Android 状态栏和应用标题栏颜色保持一致
- Android学习历程22-Android修改状态栏颜色和标题栏颜色一致
- Android 笔记:修改状态栏颜色(自定义状态栏颜色以与APP作风保持一致)
- Android自定义状态栏颜色与应用标题栏颜色一致
- Android自定义状态栏颜色与应用标题栏颜色一致
- android 修改状态栏和标题栏颜色
- android中横竖屏切换状态保持一致
- 系统状态栏设置背景颜色和APP标题栏一致(非全屏)
- Android WebView 与OkhttpClient登录状态保持一致,建立SESSION会话
- Android 如何设置状态栏颜色和标题栏颜色一致
- Android自定义状态栏颜色与APP风格保持一致的实现方法
- (The one day)About Android 系统状态栏与APP主题颜色一致(方法二)
- Android自定义状态栏颜色与APP颜色保持一致
- Android 两行代码实现修改状态栏与标题栏颜色相同
- Android自定义状态栏颜色以与APP风格保持一致
- Android中修改状态栏的颜色和我们App的风格一致
- Android WebView 与登录状态保持一致,建立SESSION会话
- android如何使系统标题栏颜色和导航栏颜色一致
- Android状态栏颜色与APP的title颜色保持一致