Android开发学习Android封装、集成_工具类Android UI

android 实现透明状态栏最简单方式

2017-04-27  本文已影响705人  小渚

写这个的来源:公司需要实现透明状态栏,状态栏颜色随着页面切换而改变,虚拟按键不变!
OK,拿到这个需求的时候,so easy !打开github!搜索statusbar,选了这3k的statusbar! 导入项目后,

既然需求是只变状态栏(以下方式api必须>=21)

对于4.4 由于没有window.setStatusBarColor(Color.TRANSPARENT);

所以只需要:window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

最后形成一个方法:

public static void setTranslucentStatus(Activity activity){
    Window window = activity.getWindow();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
      window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.TRANSPARENT);
    }else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
} 

然后在需要的activity或者baseActivity的

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Utils.setTranslucentStatus(this);
}

一定要在setContentView(R.layout.activity_main); 之前!调用

此方法,只对状态栏进行全屏,透明化处理,并没有涉及虚拟按键!有需要的朋友可以拿去!

上一篇 下一篇

猜你喜欢

热点阅读