1. 程式人生 > >Android設定沉浸式狀態列和Material主題

Android設定沉浸式狀態列和Material主題

1.設定沉浸式狀態列的方法


/**
* true 進入全屏模式,狀態列不顯示
* false 顯示狀態列
*/

public static void setSystemUiVisibility(Activity activity, boolean enterFullscreen) {
        if (activity == null) {
            return;
        }
        View decor = activity.getWindow().getDecorView();
        if (enterFullscreen) {
            activity.getWindow
().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } /* place the window within the entire screen, ignoring * decorations around the border (such as the status bar).*/
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return; } Window window = activity.getWindow
(); // Translucent status bar window.setFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // Translucent navigation bar window.setFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); int systemUiVisibility = decor.getSystemUiVisibility(); int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; if (enterFullscreen) { systemUiVisibility |= flags; } else { systemUiVisibility &= ~flags; } decor.setSystemUiVisibility(systemUiVisibility); } /** * *是否進入全屏模式 * */ public static boolean isFullScreenActivity(Activity activity) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return (activity.getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) > 0; } View decor = activity.getWindow().getDecorView(); int systemUiVisibility = decor.getSystemUiVisibility(); int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; return (systemUiVisibility & flags) == flags; }

2.使用Material主題(比較傾向於這種方法)

在BaseActivity中新增下面程式碼

 requestWindowFeature(Window.FEATURE_NO_TITLE);//無標題
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//豎直方向
        this.TAG = getClass().getSimpleName();
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//軟鍵盤自適應

修改狀態列顏色只有在5.0及以上的版本才會生效,首先檢視styles.xml中是否存在AppTheme:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->

    </style>

    然後新建values-v19,values-v21檔案,建立styles.xml檔案,新增主題:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!--狀態列顏色-->
        <item name="android:colorPrimaryDark">@color/colorAccent</item>
        <!--ActionBar顏色-->
        <item name="android:colorPrimary">#ff0</item>
        <!--介面背景顏色-->
        <item name="android:windowBackground">@color/colorAccent</item>
        <!--導航欄顏色-->
        <item name="android:navigationBarColor">#f00</item>
    </style>
最後將Manifest裡面的主題更換為AppTheme就行了。

這是我第一次寫自己的部落格,本部落格主要是為了自我學習和提高,若能幫助到您將欣喜萬分!!!

相關推薦

Android設定沉浸狀態Material主題

1.設定沉浸式狀態列的方法 /** * true 進入全屏模式,狀態列不顯示 * false 顯示狀態列 */ public static void setSystemUiVisibility(Activity activity,

Android設定沉浸狀態

public class MainActivity extends AppCompatActivity { private ViewGroup title_bar; @Override protected void onCreate(Bundle s

android系統版本6.0及以上設定沉浸狀態

系統版本6.0及以上設定沉浸式狀態列程式碼。   requestWindowFeature(Window.FEATURE_NO_TITLE); //系統版本6.0及以上設定沉浸式狀態列 if (RomUtil.hasM()) { int flag = getWindow().get

Android 沉浸狀態 activity 進出動畫

在某些情況下,我們需要設定狀態列的顏色,達到一種色調統一的效果。因此 便需要沉浸式樣式。 colorPrimary、colorPrimary、colorAccent 狀態列相關的屬性 同時在APP頁面

vue專案 使用Hbuilder打包app 設定沉浸狀態

使用 Hbuilder新建好移動app專案後,mainfest.json這個檔案裡的 plus裡設定 statusbar ..... "plus": { "statusbar": { "immersed": true },

android4.4以上沉浸狀態導航欄實現以及Bar的其他管理

自從android4.4開始,android手機狀態列再也不是一成黑的時代,之前叫做變色龍,miui6釋出會把他叫做沉浸式,之後大家就自然而然的接受了沉浸式這個名稱,其實實際應該叫做Translucent Bar,即為透明狀態列。   沉浸式實現原理其實是使整個activity佈局延伸到整個螢幕,然

Android沉浸狀態,改變狀態顏色類似QQ樣式

1、使用該功能需要使用到第三方庫SystemBarTint 下載地址:https://github.com/jgilfelt/SystemBarTint 2、需要在AndroidMainfest檔案中Application設定樣式 android:the

Android實現沉浸狀態及標題欄滑動變色

1. 沉浸式狀態列的實現 沉浸式狀態列實現的方式有很多,可自行百度谷歌 此處沉浸式狀態列實現採用第三方開源庫 ImmersionBar,整合方式可直接檢視官方文件,這裡只做演示 1.1 匯入包 implementation 'com.gyf.immersi

Android 實現沉浸狀態

上一篇文章將Android 實現變色狀態列我們實現了變色的狀態列,也介紹了沉浸式狀態列和透明狀態列的區別,這篇文章我們實現沉浸式狀態列。 沉浸式狀態列的來源就是很多手機用的是實體按鍵,沒有虛擬鍵,於是開了沉浸模式就只有狀態列消失了。於是沉浸模式成了沉浸式

Android App 沉浸狀態解決方案

伴隨著 Android 5.0 釋出的 Material Design,讓 Android 應用告別了以前的工程師審美,迎來了全新的介面,靈動的互動,也讓越來越多的 App 開始遵從 material design 設計原則,不再是以前拿著iOS設計稿,做著Androi

Android實現沉浸狀態的那些坑

最近專案需要實現沉浸式的狀態列,其實我在之前就瞭解過Android的沉浸式,發現有些棘手就放棄了,但是此次是公司的專案需要的,就花了幾天把這個問題搞定了,在此記錄一下,並mark幾個坑。 首先,沉浸式是Android 4.4及以上才有的,在後續的5.0及6.0

MUI——設定沉浸狀態

首先我們要明白,狀態列變色、狀態列沉浸式、全屏的區別 手機的頂部狀態列,也就是訊號、電量那條,有4種狀態,分別是正常、變色、透明(也稱沉浸式狀態列)、消失(也就是全屏)。 後3種特殊用法,具體見下: 狀態列變色 常見使用場景:如果title背景為純色且顯眼,一般會把狀態列

安卓如何設定沉浸狀態,注意處理華為等有虛擬按鍵的問題

當前安卓開發中,基本都使用了沉浸時候狀態列,拉伸視覺體驗,增大了螢幕空間,但是如何設定沉浸式狀態列呢,這裡簡單進行介紹: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { activity

Android沉浸狀態詳解

前言 地上斷了翅的蝶,霧散之後的滿月,原來愛跟心碎,都可以很細節。 簡介 這兩天時間比較充裕,所以實現了專案裡的沉浸式狀態列效果,這樣可以使得我們的app主題顯得更加統一。所以今天就帶領大家實現下不同情況下的狀態列效果顯示。 一 狀態列顏色改變

Android關於全屏設定隱藏狀態沉浸狀態的總結

1.全屏和推出全屏   實現全屏  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.Layo

Android之ToolBar自定義ToolBar實現沉浸狀態

沉浸式狀態列確切的說應該叫做透明狀態列。一般情況下,狀態列的底色都為黑色,而沉浸式狀態列則是把狀態列設定為透明或者半透明。 沉浸式狀態列是從android Kitkat(Android 4.4)開始出

Android動態顯示隱藏狀態/實現沉浸狀態

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // getWindow().setFlags(WindowMa

Android 5.0以上Material Design 沉浸狀態

偶然在知乎上看到這個問題,Android 5.0 如何實現將佈局的內容延伸到狀態列,之前也見過多個應用的這個功能,但是知乎上的答案卻沒有一個真正實現此功能的一類是把標題欄設定App主題顏色,一類是提取App主題顏色然後設定成狀態列的顏色,這兩種方法都只是設定了狀態列的背景色,而沒有實現佈局延伸到狀態列這個

android 配置Material Design主題沉浸狀態的實現)

對於不遵守Material Design的專案可以無視此文。 1.先在color.xml中寫好需要的顏色: <resources> <color name="Orange"&

Android 4.4之後狀態導航欄細節美化(沉浸狀態

1. 簡介 其實標題我是打算叫“搶眼的沉浸式狀態列”,但是檢視多篇文章以及官方文件發現,雖然“沉浸式狀態列”這個名字已經爛大街並且只要一提到這個標籤大家都知道是一個什麼樣的效果,其實沉浸式並不是這樣理解的,檢視官方文件發現,Google定義的沉浸式