100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 安卓全面屏手机获取虚拟导航栏高度

安卓全面屏手机获取虚拟导航栏高度

时间:2023-03-02 12:50:44

相关推荐

安卓全面屏手机获取虚拟导航栏高度

安卓全面屏手机获取虚拟导航栏高度

问题:之前做过各种导航栏的适配,这次在适配RN的虚拟导航栏时会出现闪一下的问题,问题虽然不大但是看上去不是十分美观。

解决方法:在安卓端获取虚拟导航栏高度,在RN添加同等高度的透明view于页面底部。

代码:

/*** 获取导航栏高度** @param context* @return*/public int getNavigationHeight(Context context) {int windowheight = getWindowManager().getDefaultDisplay().getHeight(); //获取无导航栏状态栏时窗口高度Log.d("无导航栏状态栏时窗口高度", String.valueOf(windowheight));int fullheigh = 0; //窗口总高度Display display = getWindowManager().getDefaultDisplay();DisplayMetrics dm = new DisplayMetrics();@SuppressWarnings("rawtypes")Class klass;try {klass = Class.forName("android.view.Display");@SuppressWarnings("unchecked")Method method = klass.getMethod("getRealMetrics", DisplayMetrics.class);method.invoke(display, dm);fullheigh = dm.heightPixels; //获取窗口总高度} catch (Exception e) {e.printStackTrace();}Log.d("有导航栏状态栏时窗口高度", String.valueOf(fullheigh));if (windowheight == fullheigh) return 0; //无虚拟导航栏存在Log.d("栏状态栏高度", String.valueOf(getStatusBarHeight(context)));return fullheigh - windowheight - getStatusBarHeight(context); //导航栏高度}

/*** 获取状态栏高度** @param context* @return*/public static int getStatusBarHeight(Context context) {Resources resources = context.getResources();int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");int height = resources.getDimensionPixelSize(resourceId);return height;}

总结:利用手机屏幕高度差来获取虚拟导航栏高度。

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