安卓状态栏优化,实现透明状态栏,沉侵式状态栏,改变状态栏颜色

1.实现透明状态栏

安卓4.4以上才可以实现透明状态栏,具体代码如下:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
注意:实现透明状态栏会默认把应用的布局延伸到状态栏位置,如果不想布局延伸到状态栏显示,则可以通过
View.setFitsSystemWindows为true来实现

2.更改状态栏颜色
2.1 安卓5.0以上更改状态栏颜色很简单,只要如下代码:
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(statusBarColor);

2.2 安卓4.4实现状态栏的方法较为复杂,前面已经说了当设置状态栏颜色为透明时会默认把应用布局延伸到状态栏位置显示,
这时候可以获取window的dectorView,自定义一个高度为状态栏高度的布局,添加到dectorView,因为此时状态栏为透明显示,
所以通过修改该布局的颜色可以达到改变状态栏的颜色的效果.
Window window = activity.getWindow();
//设置状态栏为透明
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
ViewGroup decorView = (ViewGroup) window.getDecorView();
View statusBarView = new View(activity);;
decorView.addView(decorView, ViewGroup.LayoutParams.MATCH_PARENT,getStatusBarHeight());}
//设置背景色 
statusBarView.setBackgroundColor(statusBarColor);
获取状态栏高度的方法:
public static int getStatusBarHeight() {
   Resources res = Resources.getSystem();
   int id = Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android");
   if (id > 0) {
      return res.getDimensionPixelSize(id);
   }
   return (int) (res.getDisplayMetrics().density * 25f + 0.5f);
}

3.将布局延伸到状态栏显示(沉侵式状态栏)
3.1 安卓5.0以上也是已经有封装好的api,具体代码如下:
Window window = activity.getWindow();
ViewGroup decorView = (ViewGroup) window.getDecorView();
//设置为全屏显示而且延伸到状态栏且状态栏可见
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
注意:要让布局延伸到状态栏View.setFitsSystemWindows必须为false;

3.2 安卓4.4要将布局延伸到状态栏显示仅需要设置状态栏为透明,然后View.setFitsSystemWindows必须为false,代码如下:
Window window = activity.getWindow();
//设置状态栏为透明
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
View.setFitsSystemWindows(false);
注意:3.1和3.2在实现沉侵式状态栏时,如果把布局延伸到状态栏后怕应用头布局被状态栏控件遮挡,可以设置头布局的marginTop值为状态栏的高度.
4.我的问题
在2.2,3.1,3.2的实现方法中,如果界面有键盘和输入框的,会导致要输入内容时键盘不会把输入框顶起,而是覆盖掉了输入框的问题,有没有什么好的解决方案,求指教!!


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值