asysbang

 找回密码
 立即注册
查看: 8048|回复: 0
打印 上一主题 下一主题

控制通知栏显示位置

[复制链接]

513

主题

2

好友

6404

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2013-4-23 14:52:39 |只看该作者 |倒序浏览
转载请注明: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






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2024-10-6 04:05 , Processed in 0.043557 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部