1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android 华为底部虚拟键盘隐藏 Android隐藏手机底部虚拟按键的方法

android 华为底部虚拟键盘隐藏 Android隐藏手机底部虚拟按键的方法

时间:2022-02-28 00:12:32

相关推荐

android 华为底部虚拟键盘隐藏 Android隐藏手机底部虚拟按键的方法

现在的Android手机有好多底部带虚拟按键,比如华为、nexus、魅族等等,一般情况下对APP没啥影响,但是有时候就必须要强制隐藏。

例如:游戏的时候,拍照的时候。

接下来加上几个方法就OK 了,代码如下:

/**

* 隐藏虚拟按键,并且设置成全屏

*/

protected void hideBottomUIMenu(){

if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api

View v = this.getWindow().getDecorView();

v.setSystemUiVisibility(View.GONE);

} else if (Build.VERSION.SDK_INT >= 19) {

//for new api versions.

View decorView = 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 // hide nav bar

| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar

| View.SYSTEM_UI_FLAG_IMMERSIVE;

decorView.setSystemUiVisibility(uiOptions);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

}

}

反编译framework-res.apk(可在手机中system/framework/文件夹中找到),打开res/values/bools.xml

/**

* 检查是否存在虚拟按键栏

* @param context

* @return

*/

public static boolean hasNavBar(Context context) {

Resources res = context.getResources();

//这种方式一定要注意写法要正确,内部应该是通过反射去调用的。

int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");

if (resourceId != 0) {

boolean hasNav = res.getBoolean(resourceId);

// check override flag

String sNavBarOverride = getNavBarOverride();

if ("1".equals(sNavBarOverride)) {

hasNav = false;

} else if ("0".equals(sNavBarOverride)) {

hasNav = true;

}

return hasNav;

} else { // fallback

return !ViewConfiguration.get(context).hasPermanentMenuKey();

}

}

/**

* 判断虚拟按键栏是否重写

* @return

*/

private static String getNavBarOverride() {

String sNavBarOverride = null;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

try {

Class c = Class.forName("android.os.SystemProperties");

Method m = c.getDeclaredMethod("get", String.class);

m.setAccessible(true);

sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");

} catch (Throwable e) {

}

}

return sNavBarOverride;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。