首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

设立状态栏显示在屏幕底部

2012-08-25 
设置状态栏显示在屏幕底部修改com.android.server.status.StatusBarService类中的方法:(1) public void sy

设置状态栏显示在屏幕底部

修改com.android.server.status.StatusBarService类中的方法:
(1) public void systemReady() {
? ?? ???...
? ?? ? //这里把 Gravity.TOP -> Gravity.BOTTOM
? ?? ? lp.gravity = Gravity.BOTTOM | Gravity.FILL_HORIZONTAL;
? ?? ? lp.setTitle("StatusBar");
? ?? ? lp.windowAnimations = R.style.Animation_StatusBar;
? ?? ? WindowManagerImpl.getDefault().addView(view, lp);
? ? }??
(2) void onBarViewAttached() {
? ?? ? ...
? ?? ? //这里把 Gravity.TOP -> Gravity.BOTTOM
? ?? ? lp.gravity = Gravity.BOTTOM | Gravity.FILL_HORIZONTAL;
? ?? ? lp.setTitle("TrackingView");
? ?? ? lp.y = mTrackingPosition;
? ?? ? mTrackingParams = lp;
? ?? ? WindowManagerImpl.getDefault().addView(mTrackingView, lp);
? ? }
方法(1)是系统启动的时候,服务读取状态栏时调用的方法。
屏幕加载窗体涉及到进程之间的通讯。而各个窗体加载时都是以状态栏的为参考点,位于状态栏之下的。
如果不修改窗体加载时的参考点,状态栏移到最下面后,则各个窗体会显示在屏幕之外。
窗体的位置计算在PhoneManagerService类中进行。在public void beginLayoutLw()修改:

把mDockTop= mContentTop = mCurTop = mStatusBar.getFrameLw().bottom; 更改为:

mDockTop =mContentTop = mCurTop = 0;

即以屏幕的左上角坐标(0,0)为参考点

修改mDockBottom ,mCurBottom, mContentBottom 的值,让它最终的值与下移后的状态栏的TOP位置一样。
修改成:mDockBottom = mContentBottom = mCurBottom = ( displayHeight - mStatusBar.getFrameLw().height());
也可以修改成:mDockBottom = mContentBottom = mCurBottom = mStatusBar.getFrameLw().top;

1 楼 guidian103 2012-02-06   4.0的怎么修改?  那样修改是成功了,但是4.0的好像 拉不上来啊。那个触摸没有用啊 2 楼 dss16694 2012-02-22   汗,这篇文章只是偶尔看到备份在博客,我自己还没来得及试呢,不好意思,呵呵 3 楼 dss16694 2012-02-22   不过可以研究下CM7的源码看看,CM7中的CM设置中可以设置状态栏下置的

热点排行