有时候我们需要我们的界面有更多的展示空间,这个时候我们通常会考虑隐藏我们的状态栏和标题栏,同时我们希望依然可以
通过向下滑的方式,展示并使用系统栏。
下面提供一个实现方式:
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);