天天看點

Android 系統欄,狀态欄的隐藏

         有時候我們需要我們的界面有更多的展示空間,這個時候我們通常會考慮隐藏我們的狀态欄和标題欄,同時我們希望依然可以

通過向下滑的方式,展示并使用系統欄。

下面提供一個實作方式:

  1,定義一個工具類,在onCreate方法中調用hideSystemUI方法:

package com.pplive.movie3d.utils;

import android.app.Activity;
import android.view.View;

public class ShowSystemUIUtil {
    
    public static void hideSystemUI(Activity context) {
        View decorView = context.getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        decorView.setSystemUiVisibility(uiOptions);
    }
}
           

  2,在onResume方法中設定監聽,當狀态欄顯現時,重新隐藏:

/**
     * 設定狀态欄的顯示監聽器,當狀态欄顯示時,将其隐藏!
     */
    private void setOnSystemUiListener(){
        final View decor=getWindow().getDecorView();
        decor.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() {
            public void onSystemUiVisibilityChange(int visibility) {
                
                new Handler().postDelayed(new Runnable() {
                    public void run(){
                        //decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                        try {
                            ShowSystemUIUtil.hideSystemUI(VideoPlayerFragmentActivity.this);
                        } catch (Exception e) {
                            // TODO: handle exception
                        }
                    }
                }, 1500);
            }
        });
    }           

以上方法使用Android4.4以上版本,因為View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY是Android4.4以後推出的。

——————————————————

對于較低版本的方法

最簡單當然是在Androidminifest.xml檔案中聲明:

<application
...
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen">
...
</application>           

代碼方法方式

//設定無标題  
    requestWindowFeature(Window.FEATURE_NO_TITLE);  
     /設定全屏  
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
        WindowManager.LayoutParams.FLAG_FULLSCREEN);             

繼續閱讀