工作笔记 |(周记2)解决Android设备隐藏虚拟键问题

最近做的项目要求进入应用后要如果有虚拟键的话,需要隐藏掉,于是翻阅资料解决了此问题。在此记录一下。

public class ScreenUtil {
    /**
      * <P>shang</P>
      * <P>判断是否有虚拟按键</P>
      * @param context
      * @return
      */
    public static boolean checkDeviceHasNavigationBar(Context context) {
            boolean hasNavigationBar = false;
            Resources rs = context.getResources();
            int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
            if (id > 0) {
                 hasNavigationBar = rs.getBoolean(id);
                }
             try {
             Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
            Method m = systemPropertiesClass.getMethod("get", String.class);
            String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
            if ("1".equals(navBarOverride)) {
                 hasNavigationBar = false;
             } else if ("0".equals(navBarOverride)) {
                 hasNavigationBar = true;
             }
            } catch (Exception e) {
            }
           return hasNavigationBar;
      }

 /**
   * <P>shang</P>
   * <P>解决虚拟按键问题</P>
   * @param window
   */
   public static void solveNavigationBar(Window window) {

       //布局位于状态栏下方
       int uiOptions =
              View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        //全屏
                         | View.SYSTEM_UI_FLAG_FULLSCREEN
                         //隐藏导航栏
                         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
       if (Build.VERSION.SDK_INT>=19){
            uiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

            //保持布局状态
             uiOptions |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
        }else{

            uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
        }
        window.getDecorView().setSystemUiVisibility(uiOptions);
     }
}

使用方法:

 if (ScreenUtil.checkDeviceHasNavigationBar(this)) {
      ScreenUtil.solveNavigationBar(getWindow());
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,772评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,540评论 2 59
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,062评论 3 119
  • A股市场波澜壮阔、心惊肉跳,不知又有多少看似久经沙场实则稚嫩如旧的“韭菜”们,打开自己的证券账户,历数这一年来的投...
    查理部落阅读 4,304评论 1 7
  • 情景一 小娃娃一个月时不明原因的大哭起来,我和老公在床边不停地拍,婆婆一上来,就大声说,你什么当娘的,小孩子哭就任...
    周岚_岚阅读 4,003评论 7 4

友情链接更多精彩内容