1. 程式人生 > >基於Android6.0原始碼修改遮蔽系統下方的虛擬按鍵以及上方的狀態列

基於Android6.0原始碼修改遮蔽系統下方的虛擬按鍵以及上方的狀態列

1、遮蔽系統底部的虛擬按鍵
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
在PhoneWIndowManager.java檔案中有如下程式碼:

String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
    mHasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
    mHasNavigationBar = true
; }

mHasNavigationBar的值即是否隱藏底部虛擬按鍵,false為隱藏,所以在此處我採取的操作是mHasNavigationBar不執行判斷,預設執行false
這裡寫圖片描述

2、遮蔽系統頂部的狀態列和通知欄
主要兩部分:上方的狀態列不顯示、下拉不進行操作
(1)、遮蔽手勢監聽事件
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone
在以上路徑下的PhoneStatusBarView.java檔案中進行修改
這裡寫圖片描述
這裡寫圖片描述
將上面兩個事件傳遞的方法中進行操作,全部返回false,當手勢事件傳遞全部被遮蔽掉後,通知欄裡面的內容也就不會被顯示(沒有下拉事件)
(2)、狀態列不顯示
在frameworks/base/core/res/res/values/dimens.xml檔案中修改以下內容
這裡寫圖片描述


將高度改為0dp
此時系統上方的狀態不顯示,但是需要將其佈局也置為gone,不佔地方
在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java檔案中修改一下內容,將佈局置為GONE
這裡寫圖片描述
至此係統上方的狀態列以及下方的虛擬按鍵欄都已經遮蔽