Android底部菜单栏显示与隐藏
源码下载:
https://download.csdn.net/download/qq_31939617/10508420 下载
MainActivity.class
package com.example.sz.bottomtest;
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);
}
}
源码下载:
https://download.csdn.net/download/qq_31939617/10508420 下载