首页 > 解决方案 > 从设备分辨率获取 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 分辨率?

谢谢!

标签: androidwebview

解决方案


我通过查找和使用电话的密度值解决了自己:

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);

我看到这是应用程序的可用分辨率,因此非常适合我的情况。


推荐阅读