千家信息网

实现Android Camera屏蔽下拉框和导航栏的方法是什么

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"实现Android Camera屏蔽下拉框和导航栏的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"实现Android Came
千家信息网最后更新 2025年01月19日实现Android Camera屏蔽下拉框和导航栏的方法是什么

本篇内容主要讲解"实现Android Camera屏蔽下拉框和导航栏的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"实现Android Camera屏蔽下拉框和导航栏的方法是什么"吧!

在开发过程中,有时候可能需要防呆的功能,防止用户在使用过程中误点返回键,HOME键,下拉框等之类的。接下来我们需要屏蔽这些按键,先看看代码:

 /**     * 隐藏虚拟键     */    public static void hideNavigation(Activity context) {         if ((Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB)) {            Logger.get().d("myth hideNavigation  " + context.getClass().getSimpleName());             context.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_FULLSCREEN                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_IMMERSIVE);        }    }     /**     * 隐藏虚拟键     */    public static void hideNavigation(View view) {         if ((Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB)) {            Logger.get().d("myth hideNavigation  " + view.getClass().getSimpleName()); //            | View.SYSTEM_UI_FLAG_FULLSCREEN             view.setSystemUiVisibility(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                    | View.SYSTEM_UI_FLAG_IMMERSIVE);        }    }     /**     * 显示虚拟键     */    public static void showNavigation(View view) {         if ((Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB)) {            Logger.get().d("myth hideNavigation  " + view.getClass().getSimpleName());             view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);        }

上面代码或许是一种方式,但是这种方式不是很稳定,很容易就自己又显示出来了,之后又找到一种实现方式,代码如下,亲测没问题:

/** * hide Navigation */public static void hideNavigation(Activity context) {    statusBarManager = (StatusBarManager) context.getSystemService("statusbar");    int flag = StatusBarManager.DISABLE_HOME | StatusBarManager.DISABLE_BACK | StatusBarManager.DISABLE_SEARCH | StatusBarManager.DISABLE_RECENT | StatusBarManager.DISABLE_EXPAND;    statusBarManager.disable(flag);}public static void showNavigation(){    if (statusBarManager != null)    statusBarManager.disable(StatusBarManager.DISABLE_NONE);}

StatusBarManager这个类估计是找不到,如果用Android源码编译,可以import包就ok:

import android.app,StatusBarManager;

如果不是android 源码编译,那可以使用反射的机制完成这个功能,代码如下:

private void disableStatusBars() {        Object service = getSystemService("statusbar");        try {            Class statusBarManager = Class.forName                    ("android.app.StatusBarManager");            Method expand = statusBarManager.getMethod("disable", int.class);            expand.invoke(service, 0x00010000);        } catch (Exception e) {            e.printStackTrace();        }    }

到此,相信大家对"实现Android Camera屏蔽下拉框和导航栏的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0