有時候我們需要我們的界面有更多的展示空間,這個時候我們通常會考慮隐藏我們的狀态欄和标題欄,同時我們希望依然可以
通過向下滑的方式,展示并使用系統欄。
下面提供一個實作方式:
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);