asysbang

标题: 控制通知栏显示位置 [打印本页]

作者: admin    时间: 2013-4-23 14:52
标题: 控制通知栏显示位置
转载请注明:www.asysbang.com

手机中通知栏是显示在屏幕的最上方的,而平板是在右下角
如何配置通知栏的显示位置呢

frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中

public void setInitialDisplaySize(Display display, int width, int height)函数

int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT / DisplayMetrics.DENSITY_DEVICE;

       if (shortSizeDp < 600) {
            // 0-599dp: "phone" UI with a separate status & navigation bar
            mHasSystemNavBar = false;
            mNavigationBarCanMove = true;
        } else if (shortSizeDp < 720) {
            // 600-719dp: "phone" UI with modifications for larger screens
            mHasSystemNavBar = false;
            mNavigationBarCanMove = false;
        } else {
            // 720dp: "tablet" UI with a single combined status & navigation bar
            mHasSystemNavBar = true;
            mNavigationBarCanMove = false;
        }

只要修改600和720这两个值就可以控制通知栏的位置了


PS:DisplayMetrics.DENSITY_DEVICE  这个值和ro.sf.lcd.density这个属性值有关
android不同版本,以及不同的平台这个地方的代码会有不同,需要分析具体代码
需要注意的是,这个地方修改之外,SystemUI也要配合修改,否则可能SystemUI运行会报错,导致状态栏消失

其中最后一个else 在android4.2的代码中被移除了

因为google官方决定4.2开始通知栏只在屏幕上方,并且还有快捷设置

如果还想在下面显示通知栏,最简单的方法就是直接加上else











欢迎光临 asysbang (http://asysbang.com/) Powered by Discuz! X2.5