本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1、安卓App实现霸屏思路
非Root环境下安卓实现全屏,屏蔽下方虚拟按键:左键、右键。
注:较新安卓系统无法屏蔽Home键。
全屏后,用户上划之后点击虚拟按键如图所示:
2、代码分为以下三部分
1、隐藏屏幕下方的虚拟按键,并且全屏。
注:这一步只是隐藏按键,不是禁用按键,用户还可以上滑出虚拟按键)
package com.app.fullscreen;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN|View.SYSTEM_UI_FLAG_IMMERSIVE;
decorView.setSystemUiVisibility(uiOptions);
hideBottomUIMenu();
//onAttachedToWindow();
}
用户调出下方Android虚拟按键后,分别屏蔽。
2、禁止左边应用列表按键。
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Toast.makeText(MainActivity.this, "onUserLeaveHint", Toast.LENGTH_SHORT).show();
((ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE)).moveTaskToFront(getTaskId(), 0);
}
3、禁止右边回退按键。
/*
* 3.禁止右边回退按键
* */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(MainActivity.this, "已屏蔽返回键", Toast.LENGTH_SHORT).show();
return true;
}
if (keyCode == KeyEvent.KEYCODE_HOME) {
Toast.makeText(MainActivity.this, "不能回到主屏幕", Toast.LENGTH_SHORT).show();
return true;
}
// return true;
return super.onKeyDown(keyCode, event);
}