【问题标题】:How do I correctly implement Android Viewport Spoofing?如何正确实现 Android Viewport Spoofing?
【发布时间】:2018-01-03 01:54:10
【问题描述】:

我最近构建了一个应用程序,它使用全屏网络视图来加载我不拥有的网站。 (因此,没有控制站点代码)

我需要 webview 来显示网站的桌面版本,而桌面 http 标头欺骗并没有起到作用。我发现,由于网站的响应式设计规则,决定网站发送移动设备还是桌面设备的是视口大小。

在我的 Pixel XL 上,此代码使页面看起来正确:

webview_chart.getSettings().setLoadWithOverviewMode(true);

webview_chart.setInitialScale(200);
 webview_chart.getSettings().setUseWideViewPort(false);
 webview_chart.getSettings().setMinimumFontSize(16); String newUA= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19";
 webview_chart.getSettings().setUserAgentString(newUA);
 webview_chart.loadUrl("http://tradingview.com/chart");

这里似乎很关键的三件事是

  1. WideViewPort 必须为 false(否则我会获得移动视图)
  2. InitialScale = 200 使它在我的设备上显示桌面,但看起来很小而且很远。因此:
  3. MinimumFontSize = 16。

现在,这会使我的手机和其他屏幕尺寸相似的设备看起来一切正常,但较小的屏幕会出现问题。

在我妻子的原始 Moto X 上,InitialScale 200 仍然提供移动站点。将其更改为 150 并稍微减小字体大小使它在 Moto X 上看起来很完美,但在 Pixel 上,东西太小而且间隔很远,好像所有东西的边距都更大。

如何让这个 webview 在不同的屏幕尺寸下正确显示?我什至不确定我使用的代码是否是实现这一壮举的最佳实践。我只是将它一起破解,发现它可以显示大小合适的桌面视图(深夜反复试验)。但事实证明它不适用于其他屏幕尺寸。 在处理网站的响应式设计规则时,我可以进行哪些更改以使其具有灵活性、适应性或响应性?

【问题讨论】:

    标签: android android-webview responsive-design-view


    【解决方案1】:

    您需要设置视口,因为目标网站似乎正在使用基于视口尺寸而不是基于 HTTP 请求标头的响应式设计。这种方法是一种常见的 CSS 实践。

    您可以在这里找到完整的文档: https://developer.android.com/guide/webapps/targeting.html#Viewport

    【讨论】:

    • 谢谢。根据这些文档,我会包括 window.devicePixelRatio(1.5);如果是这样,怎么做?我尝试了一些不同的方法——编译时出错。我的方向正确吗?
    猜你喜欢
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多