Android透明状态栏多版本适应开发总结

本文总结了Android透明状态栏的两种实现方式,适用于不同版本的设备。第一种适用于5.0以上版本,通过设置StatusBar颜色;第二种配合Toolbar使用,适用于低版本和需要自定义状态栏背景的情况。同时,文中还讨论了相关属性的使用和注意事项,包括`setFitsSystemWindows`和`FLAG_TRANSLUCENT_STATUS`。最后提供了应用场景和代码示例。
摘要由CSDN通过智能技术生成

案例:

效果:
效果

第一种

思路:

  • android5.0以上
  1. 利用window将声明Status可绘制,相关Param属性为FLAG_DRAW_SYSTEM_BAR_BACKGROUDS
  2. 调用window.setStatusBarCorlor()将Status颜色设置成actionBar颜色

这种方法有一定的局限性,满足toolbar为单一颜色的情况,当toolbar颜色背景为渐变色/图片时无法适用。

代码实现:

        // activity中
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
   
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            // 颜色为状态栏颜色,可在style中查看
            getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimary)); 
        }
  • 5.0以下
第二种

通常配合Toolbar使用,关于隐藏ActionBar添加Toolbar的方法不是本篇重点,这里不进行赘述。
思路:将status设为半透明,在系统布局中加上一个view充当status的背景

    // activity中
    private View mStatusView;

    private void addToolbarTransparent() {
   
        // 为window设立半透明状态栏的标签
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        if (mStatusView == null) {
   
            mStatusView = new View(this);
            // 屏幕宽度
            int screenWidth = getResources().getDisplayMetrics().widthPixels;
            int screenHeight = getStatusBarHeight();
            ViewGroup.LayoutParams layoutParams =  new ViewGroup.LayoutParams(screenWidth,screenHeig
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值