android4.0+版本修改状态栏透明的调试

 近期被Launcher折磨的基本神魂颠倒,但是每一次的修改收到成效总是会有一点点欣喜。经过2天的查资料,做试验,看了网上各位达人的各种方法后总算完成了Status_bar的透明操作。

         步骤很简单,过程却很纠结。

         首先最开始想到的是状态栏背景图,于是乎找了很久的背景图,尝试更换了半透明和全透明的背景图到res文件,结果是失败的。

         最后查代码,看xml文件,总算发现status_bar的背景设置是#FF000000,竟然是直接设置了颜色。所以果断的将颜色改为了#00000000,根据经验前两位为透明度参数,越小透明度越高。然后编译Framework,看效果,还是不行。有些泄气,怀疑是不是改错地方了,确认了多次说明还是不行。所以只能再次查资料。

        此时看到一位达人的博客,在此借用一下。

           

      首先找到Android/frameworks/base/policy/src/com/android/internal/policy/impl中的PhoneWindowManager.Java


     然后找到 public int getSystemDecorRectLw(Rect systemRect) 的方法

     原来的方法内容是: 

p   ublic int getSystemDecorRectLw(Rect systemRect) {
        systemRect.left = mSystemLeft;
        systemRect.top = mSystemTop;
        systemRect.right = mSystemRight;
        systemRect.bottom = mSystemBottom;
        if (mStatusBar != null) return mStatusBar.getSurfaceLayer();
        if (mNavigationBar != null) return mNavigationBar.getSurfaceLayer();
        return 0;
    }

   在这里修改该方法为

    public int getSystemDecorRectLw(Rect systemRect) {
        systemRect.left = mSystemLeft;
        systemRect.top = mSystemTop;
        systemRect.right = mSystemRight;
        systemRect.bottom = mSystemBottom;
        if (mStatusBar != null) return 0;
        if (mNavigationBar != null) return 0;
        return 0;
    }

    这里修改完毕以后,

    进入android/frameworks/base/packages/SystemUI/res/layout目录下

    找到navigation_bar.xml和status_bar.xml文件

    然后把这个两个布局文件的background属性都修改为#00000000。


          按照高手所说的,透明效果顺利实现。但是同时发现一个问题,在进入有些非全屏应用时状态栏已然不是透明的,因此这个地方还需要继续研究。顺便提一个透明效果实现后界面出现的问题,就是透明的状态栏看起来会有断层的感觉,原因不明,且发现整个界面会出现两边淡淡的黑色的渐变效果,因此在查过资料做过尝试后确定直接在Launcher.xml文件中直接去掉Launcher的android:background="drawable/workspace_bg"属性后一切正常,边缘的渐变效果消失。

          此次修改到此结束,感谢。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值