MainActivity.class
package com.example.kx.mydemo; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Build; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; public class MainActivity extends AppCompatActivity { Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //隐藏底部菜单栏 secondHide(); setContentView(R.layout.activity_main); btn = findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //取消发送,显示底部菜单栏 mHandler.removeMessages(COLLAPSE_STATUS_BAR); showBottomUIMenu(); } }); } //延时毫秒数 private static final long COLLAPSE_SB_PERIOD = 100; //id private static final int COLLAPSE_STATUS_BAR = 1000; @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case COLLAPSE_STATUS_BAR: collapse(MainActivity.this, true); sendEmptyMessageDelayed(COLLAPSE_STATUS_BAR, COLLAPSE_SB_PERIOD); break; default: break; } } }; public void secondHide() { int flags = getWindow().getDecorView().getSystemUiVisibility(); getWindow().getDecorView().setSystemUiVisibility(flags | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); mHandler.sendEmptyMessageDelayed(COLLAPSE_STATUS_BAR, COLLAPSE_SB_PERIOD); } public static void collapse(Activity activity, boolean enable) { Window window = activity.getWindow(); if (enable) { WindowManager.LayoutParams attr = window.getAttributes(); window.setAttributes(attr); window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); int flags = window.getDecorView().getSystemUiVisibility(); window.getDecorView().setSystemUiVisibility(flags | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); attr.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; } else { WindowManager.LayoutParams attr = window.getAttributes(); attr.flags &= (WindowManager.LayoutParams.FLAG_FULLSCREEN); window.setAttributes(attr); window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } } /** * 显示菜单栏 * 如果底部的bar 隐藏就显示 */ protected void showBottomUIMenu() { int flags; int curApiVersion = android.os.Build.VERSION.SDK_INT; // This work only for android 4.4+ if (curApiVersion >= Build.VERSION_CODES.KITKAT) { // This work only for android 4.4+ // hide navigation bar permanently in android activity // touch the screen, the navigation bar will not show flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; } else { // touch the screen, the navigation bar will show flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; } // must be executed in main thread :) getWindow().getDecorView().setSystemUiVisibility(flags); }