GraduateDesign-初试APP编写(去除虚拟按键和禁止状态栏下拉)

为了毕设的要求,需要在Android系统上运行一个app来控制硬件,今天开始这个app的编写。

首先,我们的系统将只运行这个app,也就是我们不需要状态栏,虚拟按键等。

故这里将app设置为全屏模式。

 /**
     * 隐藏虚拟按键,并且全屏
     */
    private final 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_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

但是在退出app后,重新打开软件则不会全屏。

这里,我在网上找了个方法,直接在系统底层将虚拟按键给禁用掉。

找到framework/base/core/res/res/values/dimens.xml,在其中把Navigation的配置改成0

<!-- Height of the bottom navigation / system bar. -->
    <dimen name="navigation_bar_height">0dp</dimen>
    <!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height -->
    <dimen name="navigation_bar_height_landscape">0dp</dimen>

这里只需要将红色的地方修改为0即可。重新烧写系统,开机后就没有下面的虚拟按键了。

链接:http://blog.csdn.net/huanghai381/article/details/51684485

但是,用户还是可以通过状态栏下拉来进入系统设置,所以我们也要禁用掉状态栏下拉的功能。

这里我找到了一个帖子,确实可用。

具体是将在frameworksasepackagesSystemUIsrccomandroidsystemuistatusbarphonePanelBar.java文件中的 startOpeningPanel(panel); 注释掉即可。

http://blog.csdn.net/u011913612/article/details/72478517

虽然上面的两中方法均实现了我的要求,但是我的系统是专门运行我的这一个app程序的。所以用上面的方法并没有什么不妥。但是实际中,这种方法我个人觉得还是不太好的。非不得已不要使用。

原文地址:https://www.cnblogs.com/ynxf/p/8243705.html