簡體   English   中英

移動Android狀態欄

[英]Move the Android Status Bar

我正在嘗試將Android(Froyo)中的狀態欄從屏幕頂部移動到屏幕底部。 我做了很多研究,但沒有找到任何能夠成功做到這一點的人。

旁注:我不想隱藏狀態欄,我想移動它。 另外,我不擔心狀態欄是否無法再展開。 對於這個用例,它永遠不需要。

這是我到目前為止所做的:

  1. 查看systemui/res/status_bar.xml中的status_bar.xml文件,但它似乎只在狀態欄中定義了布局,而不是狀態欄本身。
  2. 查看systemui\\src\\com\\android\\systemui\\statusbar\\StatusBarService.java文件。
    • 在第267行附近,從R.layout.status_bar創建了StatusBarView (在我上面提到的status_bar.xml文件中定義)。
    • 在第330行附近,實例化WindowManager.LayoutParams並將重力設置為Gravity.TOP
    • 視圖和WindowManager.LayoutParams在addStatusBarView()末尾的第341行傳遞給WindowManagerImpl.getDefault().addView(view, lp) )。

基於此,我將WindowManager.LayoutParams的重力更改為Gravity.BOTTOM。 這個DID在某種程度上起作用; 狀態欄位於屏幕底部。 但是,通常顯示在狀態欄下方的所有其他內容仍位於狀態欄下方 - 它會被推離屏幕底部。 就像屏幕的其余部分相對於狀態欄一樣。

任何人都可以提供任何有關我需要修改的內容的見解嗎?

該問題的解決方案如下:

  1. frameworks/base/services/java/com/android/server/status/StatusBarService.java Gravity.TOP Gravity.BOTTOM更改為Gravity.BOTTOM
  2. frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java替換mDockTop = mContentTop = mCurTop = mStatusBar.getFrameLw().bottom with mContentBottom = mCurBottom = mStatusBar.getFrameLw().top
  3. 周圍的719線frameworks/policies/base/mid/com/android/internal/policy/impl/MidWindowManager.java ,取代mCurTop = mStatusBar.getFrameLw().bottommCurBottom = mStatusBar.getFrameLw().top

我在模擬器中對Froyo進行了測試,效果很好。 狀態欄位於底部,其他所有內容都位於其上方。 正如我上面提到的,對於我的用例,我永遠不需要擴展狀態欄,所以這對我來說已經足夠了。 但是,正如@ jkhouw1所提到的,通過修改StatusBarService.java的邏輯,特別是第1159行的performFling方法,可以使狀態欄向上擴展。

希望有人覺得這很有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM