Cordova 實現沉浸式(透明)狀態欄效果

沉浸式狀態欄(Immersive Mode)和透明狀態欄(Translucent Bar)。

這兩個概念很多地方的解釋都不是很清晰,所以導致很多人都各有各的認識。所以這裏我也有一個自己的認識,筆者認爲沉浸式狀態欄也可以說是全屏模式,即隱藏狀態欄與導航欄。 而透明狀態欄是不隱藏狀態欄但是它所呈現的是透明的。因爲默認情況下狀態欄都是黑底白字。而我們現在要實現的就是透明狀態欄下的全屏模式。話不多說,看效果:
這裏寫圖片描述
這裏寫圖片描述

對比這兩張圖的狀態欄效果可以看出。第一張圖效果對界面來說不是很美觀,但是第二個效果就非常美觀了。下面我們就來實現。

使用cordova實現就需要cordova-plugin-statusbar這個插件,我們需要對此插件進行一些修改即可實現我們想要的效果。

在項目路徑->platforms->android->src->org->apache->cordova->statusbar中找到StatusBar.java文件。
然後修改run方法即可:

  public void run() {
    // Clear flag FLAG_FORCE_NOT_FULLSCREEN which is set initially
    // by the Cordova.
  Window window = cordova.getActivity().getWindow();
//添加內容start
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
//添加內容end
                window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
// Read 'StatusBarBackgroundColor' from config.xml, default is #000000.

//註釋默認的設置背景色的方法                //setStatusBarBackgroundColor(preferences.getString("StatusBarBackgroundColor", "#000000"));
            }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章