android - 从设备分辨率获取 webview 分辨率
问题描述
有没有办法从设备分辨率开始计算安卓设备的网络分辨率?
我的 Pixel 3a 的设备分辨率为 1080x2176 像素,但是当我在 chrome 上浏览页面时,渲染页面的分辨率为 393x808。
我要自定义一个 web 到应用程序的 Android 应用程序,当页面完成加载我的 javascript 时,我无法获得窗口的高度和宽度。
现在我可以将设备分辨率作为标头传递,这样我就可以在我的网站上使用 PHP 和 javascript 来检测传递的值。
这是代码:
Map <String, String> extraHeaders = new HashMap<String, String>();
int screenHorigin = Resources.getSystem().getDisplayMetrics().heightPixels;
int screenWorigin = Resources.getSystem().getDisplayMetrics().widthPixels;
double screenHD = (screenHorigin/2.819);
double screenWD = (screenWorigin/3.056);
int screenH = (int) screenHD;
int screenW = (int) screenWD;
extraHeaders.put("screen-h", Integer.toString(screenH));
extraHeaders.put("screen-w",Integer.toString(screenW));
mWebView.loadUrl(mUrl, extraHeaders);
我知道在创建和渲染之前我无法获得 webview 分辨率,但是有没有办法检测 BROWSER 分辨率而不是 DEVICE 分辨率?
谢谢!
解决方案
我通过查找和使用电话的密度值解决了自己:
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int screenHorigin = displayMetrics.heightPixels;
int screenWorigin = displayMetrics.widthPixels;
float density = Resources.getSystem().getDisplayMetrics().density;
double screenHDI = (screenHorigin/density);
double screenWDI = (screenWorigin/density);
double screenH = ceil(screenHDI);
double screenW = ceil(screenWDI);
我看到这是应用程序的可用分辨率,因此非常适合我的情况。
推荐阅读
- html - 使用溢出向右移动选定的列表项
- php - 用 post 发送文件,然后用 ftp 上传
- telegram - 将消息从电报信使机器人发送到电子邮件
- android - Google 登录 - GoogleSignInAccount 返回 null
- java - 迭代二维数组的不同方法
- bash - 在公共字符串之前重命名目录中所有文件名的前半部分(连字符到句点)
- javascript - 如何使用 node/javascript 简化将多个变量传递到方法中
- javascript - reactjs如何显示多个标签?
- php - 如何在第 n 个字段之后拆分字符串并从 PHP 中的其余部分创建一个数组?
- vue.js - Element-UI 日期选择器一周的开始?