Android 4.4之后谷歌提供了沉浸式全屏體驗, 在沉浸式全屏模式下, 狀態欄、 虛擬按鍵動態隱藏, 應用可以使用完整的屏幕空間, 按照 Google 的說法, 給用戶一種 身臨其境 的體驗。而Android 5.0之后谷歌又提出了 ColorPalette 的概念,讓開發者可以自己設定系統區域的顏色,使整個 App 的顏色風格和系統的顏色風格保持統一。
在沒有CCSystemBar之前,用Delphi實現上面的功能,是件很麻煩的事情,前期的博文也有寫這方面的實現。現在這一切變的簡單了!
先看一下CCSystemBar的方法:
procedure TranslucentStatusBar; function checkDeviceHasNavigationBar: Boolean;//檢查是否有底部的導航條 function checkNavigationBarShow: Boolean;//檢查是否顯示了底部的導航行 function getStatusBarPixelHeight(): Integer;// function getStatusBarPointHeight(): Single;//獲取StatusBar頂部狀態欄Point高度 function getNavigationBarPixelHeight(): Integer; function getNavigationBarPointHeight(): Single;//獲取NavigationBar底部導航欄Point高度
了解了這個控件提供的方法,現在看看怎么具體使用:
1.拖一下控件到Form上,一般就是主Form了,然后再手工填加引用的單元:CC.VirtualKeyboard
2.放一個Toolbar,設置為Top,也可以用TRectangle,反正用一個可視控件,占用屏的頂部。接下來用CCSystemBar取得的狀態條的高度來設置Toolbar的內邊距:
AToolBar.Padding.Top := self.CCSystemBar1.getStatusBarPointHeight;
這是作者提供的例子使用的方法,也可以換用其他實現方式,比如:就用一個TRectangle來占用狀態條區域。
3.按上面的實現,同理處理底部導航條,放置一個Toolbar,Align設置為MostBottom。
procedure TMainForm.SetNavigationBarHeight(AToolBar: TToolBar); begin if self.CCSystemBar1.checkNavigationBarShow then begin AToolBar.Height := self.CCSystemBar1.getNavigationBarPointHeight; end else begin AToolBar.Height := 0; end; end;
看代碼,如果導航條顯示,則設置其高度為系統導航條的高度,反之,設置為0.
4.為了適應系統虛擬鍵盤的顯示與隱藏,我們還需要處理Form的FormVirtualKeyboardHidden及FormVirtualKeyboardShown事件:
procedure TMainForm.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin SetNavigationBarHeight(self.NavigationBar); end; procedure TMainForm.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin SetNavigationBarHeight(self.NavigationBar); end;
5.在Form.OnCreate事件中,初始化狀態條及導航條的高度:
procedure TMainForm.FormCreate(Sender: TObject); begin self.CCSystemBar1.TranslucentStatusBar;//適應低版本的android,必須調用。 SetStatusBarPadding(self.StatusBar); SetNavigationBarHeight(self.NavigationBar); end;
6.發布配置文件:

打開Deployment窗口,如上圖,取掉自帶的styles.xml及styles-v21.xml,填加ChinaCock帶的對應文件。
啟動圖片換成loading.png發布,去掉系統自帶的splash_image_def.xml文件。
Ok,萬事大吉,運行app!

后記:
2020-04-01,需要注意,項目設置中,Include splash image必須勾選,如下圖:

我因為這個問題,造成應用不正常顯示了!
