1. 程式人生 > >Android 4.4及以上版本實現狀態列透明

Android 4.4及以上版本實現狀態列透明

參考了網上的很多方法,實現了狀態列透明,即狀態列和標題欄顏色一致。特此總結一下,以下方法適用於佈局裡沒有EditText控制元件的情況下:

  • 1、values/styles中定義app基本主題AppTheme,適配4.4以下非透明狀態列
    <style name="AppTheme" parent="@style/BaseTheme"/>

    <style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
  • 2、values-v19/styles定義4.4及以上版本theme,使能狀態列透明
    <style name
="AppTheme" parent="@style/BaseTheme"> <!--<item name="android:windowTranslucentNavigation">true</item>--> <item name="android:windowTranslucentStatus">true</item> </style>
  • 3、(1)如果activity包含toolbar佈局,想要實現狀態列透明,則須在toolbar中新增android:fitsSystemWindows=”true”,作用為在toolbar增加25dp的paddingTop,同時須設定android:minHeight,否則在5.0時狀態列高度會不正常。
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:fitsSystemWindows="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay">

        </android.support.v7.widget.Toolbar>

然後在activity的onCreate方法中新增程式碼

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //5.0及以上版本時,需要手動設定狀態列顏色為透明才能真正透明;4.4時style設為透明狀態就可真正透明
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }
  • 3、(2)如果activity為全屏圖片,想要實現狀態列透明,則activity佈局為
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/splash_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_welcome"
    android:fitsSystemWindows="true"
    tools:context=".activity.SplashActivity">

</RelativeLayout>

然後在activity的onCreate方法中新增程式碼

        //5.0及以上版本時,需要手動設定狀態列顏色為透明才能真正透明;4.4時style設為透明狀態就可真正透明
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }

OK!!!

相關推薦

Android 4.4以上版本實現狀態透明

參考了網上的很多方法,實現了狀態列透明,即狀態列和標題欄顏色一致。特此總結一下,以下方法適用於佈局裡沒有EditText控制元件的情況下: 1、values/styles中定義app基本主題AppTheme,適配4.4以下非透明狀態列 &

TortoiseSVN 1.9.5安裝 與 Eclipse4.4.2以上版本中安裝SVN插件

new port 作用 nbsp fin 1.8 detail net .net 引自: http://blog.csdn.net/chenchunlin526/article/details/54631458 TortoiseSVN 1.9.5安裝 與 Eclipse4

TortoiseSVN 1.9.5安裝 與 Eclipse4.4.2以上版本中安裝SVN外掛

引自:http://blog.csdn.net/chenchunlin526/article/details/54631458 TortoiseSVN 1.9.5安裝 與 Eclipse4.4.2及以上版本中安裝SVN外掛  ---於2017-7-11編輯過 1、先在本機安裝TortoiseSVN 1.9.

Unity在Android 6.0以上版本彈出許可權申請視窗的問題

Android 版本大於等於6.0(SDK版本大於等於23),許可權需要應用自主申請,動態申請許可權。 如果Unity做為Android的子模組,除了應用本身會有申請許可權的彈窗之外,Unity也會自動彈出許可權申請視窗。 網路許可權(普通許可權)、手機震動許

Android 6.0以上版本定位許可權開發問題

在開發APP過程中,發現Android 6.0版本的百度定位無法使用,查閱資料後發現android 6.0及以上系統 許可權管理變了,定位屬於隱私許可權,需要在執行時手動申請 關於Android5.0和Android6.0在許可權方面的區別: And

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

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

.net 4.0以下版本,MVVM模式ViewModel基類:使用StackTrace實現INotifyPropertyChanged介面

using System; using System.ComponentModel; namespace SSMart_Model {     public class VModelBase: INotifyPropertyChanged, IDisposable    

Android 反射呼叫方法並利用此方法展開android通知欄(相容4.2以上

前段時間由於專案需要實現了展開通知欄的功能,所謂展開通知欄,就是通過expand  statusbar的方式將所有通知顯示出來,也就是手勢由頂部下滑展開的介面,statusbar屬於全域性且系統級別的介面,API中並沒有開放獨立的介面供我們呼叫以完成通知欄的展開,所以這裡

Spring 4.2.2以上版本和swagger集成方案和踩過的坑

pin sele -s ner -h tap width pub equal 因為公司使用的spring版本太高,在集成swagger的時候會存在一些問題,而網上的很多實例大多都是版本比較低的,為了是朋友們少才坑,我這邊將集成的過程記錄一下: 1. 引入spring、swa

Java架構-Spring 4.2.2以上版本和swagger整合方案和踩過的坑

因為公司使用的spring版本太高,在整合swagger的時候會存在一些問題,而網上的很多例項大多都是版本比較低的,為了是朋友們少才坑,我這邊將整合的過程記錄一下: 引入spring、swagger的相關jar包(springfox-swagger2、springfox-sw

Android M以上版本系統 懸浮窗許可權 的解決方案

Android M及以上版本系統 懸浮窗許可權 的解決方案   Android的視窗體系中,WindowManager佔有非常重要的地位,平時我們使用懸浮窗會遇到一些許可權的問題。 當 Android工程在targetSdkVersion 23 編譯,Android6.0及其以上版

luabind 0.9.1在boost 1.49+和gcc-4.6.3以上版本的編譯問題處理

將boost更新到1.53時, 發現luabind死活編譯不過, 報錯如下 error: missing binary operator before token "(" 根據老外的描述, boost中的BOOST_PP_ITERATION_FLAGS從1.49版本後發生了一些變化. 在git找到一個

Android N以上版本應用安裝包下載完成自動彈出安裝介面的適配方法

Android N及以上版本應用安裝包下載完成自動彈出安裝介面的適配方法   在實現下載和安裝APP功能的時候在Android較高版本可能會遇到如下的問題: 安裝Apk時報錯:android.os.FileUriExposedException: file:///storag

【Linux開發】GCC 4.8以上支援記憶體非法訪問檢查

gcc4.8及以上版本支援地址越界,野指標檢查,只需要在編譯時使用-fsanitize=address選項即可,當執行程式時如果訪問非本程式申請的地址就會報錯。[email protected]:/home/ngos/practice> vi nullpoi

Spring 4.2.2以上版本和swagger整合方案和踩過的坑

因為公司使用的spring版本太高,在整合swagger的時候會存在一些問題,而網上的很多例項大多都是版本比較低的,為了使朋友們少踩坑,我這邊將整合的過程記錄一下:願意瞭解原始碼的朋友直接求求交流分享技術二一四七七七五六三三 1. 引入spring、swagger的相關ja

HttpClient使用詳解(4.3.X以上版本)

       Http協議的重要性相信不用我多說了,HttpClient相比傳統JDK自帶的URLConnection,增加了易用性和靈活性(具體區別,日後我們再討論),它不僅是客戶端傳送Http請求變得容易,而且也方便了開發人員測試介面(基於Http協議的),即提高了開發

Python3.x+matplotlib(matplotlib版本好像是2.2.1以上版本;反正要求較高版本)庫實現三維網格塊彩色顯示原始碼

1、程式碼及相關資料下載地址:https://download.csdn.net/download/higher80/105026332、參考資料地址(如果下列網址打不開,可以看上面“1”中的檔案,裡面有下載的網頁檔案)(1)使用python繪製三維圓柱網格模型圖——voxe

android M 以上版本將應用新增至忽略電池優化

/** * 忽略電池優化 */ private void ignoreBatteryOptimization(Activity activity) { if

Android 7.0以上使用OpenCL

由於從Android 7.0, API 24, 開始, 系統將阻止應用連結至非公開NDK庫, 所以, 使用libOpenCL.so時與面向低版本的Android平臺有所不同, 需要把依賴的非公開NDK庫打包到APK中 確定依賴的庫 首先應該確定你所使用的libOpenC.so所依賴的庫, 使用命令objd

vs2013以上版本opengl環境搭建

一、更新電腦驅動 由於OpenGL的大多數實現都是由顯示卡廠商編寫的,當產生一個bug時通常可以通過升級顯示卡驅動來解決。這些驅動會包括你的顯示卡能支援的最新版本的OpenGL,這也是為什麼總是建議你偶爾更新一下顯示卡驅動。   二、GLFW+GLEW庫檔案下載 下載對應的