通过WebView在Android设备上正确扩展网站

通过WebView在Android设备上正确扩展网站,第1张

概述我的应用程序是一个简单的WebView“包装器”,它以固定的横向方向显示一个网页,页面有一个760px宽和415px高的居中div,这应该在所有设备上显示,因此它(大致)适合屏幕,用户无法改变缩放…我几乎完成了与缩放相关的所有工作. 我在页面上有以下视口元标记: <meta name="viewport" content="width=device-width, target-densityDpi 我的应用程序是一个简单的WebVIEw“包装器”,它以固定的横向方向显示一个网页,页面有一个760px宽和415px高的居中div,这应该在所有设备上显示,因此它(大致)适合屏幕,用户无法改变缩放…我几乎完成了与缩放相关的所有工作.

我在页面上有以下视口元标记:

<Meta name="vIEwport" content="wIDth=device-wIDth,target-densityDpi=device-dpi,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>@H_404_14@  

我创建的WebVIEw包装器.apk的清单如下:

<supports-screens androID:smallScreens="true"androID:normalScreens="true" androID:largeScreens="true"androID:anyDensity="true" /><application androID:icon="@drawable/icon" androID:label="@string/app_name">    <activity androID:name="{my name}"            androID:theme="@androID:style/theme.NoTitlebar.Fullscreen"            androID:label="@string/app_name">        <intent-filter>            <action androID:name="androID.intent.action.MAIN" />            <category androID:name="androID.intent.category.LAUNCHER" />        </intent-filter>    </activity></application>@H_404_14@  

我应该提一下,最初的.apk目标是AndroID 2.2,我最近更改为2.3.1并在清单中添加了另一行,但这对任何事情没有任何影响:

androID:xlargeScreens="true"@H_404_14@  

我将以下内容添加到.java代码中:

webvIEw.setScrollbarStyle(WebVIEw.SCRolLbarS_OUTSIDE_OVERLAY);webvIEw.setScrollbarFadingEnabled(false);webvIEw.getSettings().setSupportZoom(false);webvIEw.getSettings().setBuiltInZoomControls(false);setRequestedOrIEntation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);@H_404_14@  

出于这个问题的目的,只假设整个网站上的唯一内容是以下< div>:

<div >@H_404_14@  

我的问题是,我不能在所有AndroID设备上提出“一刀切”的扩展解决方案,其他一切我自己负责提供的工作正常.

我在三个不同的设备上试过这个,一个平板电脑和两个电话,并且< div>的左侧,右侧和底部有一个很大的间隙.层.看起来760px的宽度在每一个设备的两侧都有大约50px的间隙,而在每个设备的底部都是相同的,我想要做的就是将其缩小,以便大致填满所有设备的屏幕.

我的手机说它有一个window.innerWIDth为854,window.devicePixelRatio为1.5,如果我将初始和最大刻度更改为1.12< div>图层完全适合我的设备.该表说它有一个window.innerWIDth为980,window.devicePixelRatio为1.0,似乎比较大约1.27.我不知道第三个设备的细节,但使用1.1似乎可以做到这一点.

当然改变初始缩放不是一个解决方案,甚至尝试它将是一个完整的噩梦所以,手指交叉,任何人都可以告诉我,我错过了令人目眩的明显的事情,这将使这项工作?或者我只是要求不可能自动将视图缩放到固定大小< div>?

解决方法 对…在回家的路上,我陷入了困境并且有一个快乐的好想法,我得出的结论是,我大大过度思考这个问题.

这很粗糙但它完成了工作,我从网站中删除了元标记并将其添加到应用程序:

// Set up up the scaling valuefloat scaling = 100;int display_wIDth;displayMetrics dm = new displayMetrics();getwindowManager().getDefaultdisplay().getMetrics(dm);display_wIDth = dm.wIDthPixels;scaling = (((float)display_wIDth/760)*100); // 760 here is my container div wIDthscaling = (int) Math.floor(scaling); // Set up the webvIEw and apply the scale valuewebvIEw = (WebVIEw) findVIEwByID(R.ID.webvIEw);webvIEw.setinitialScale((int)scaling);@H_404_14@  

这很有效,但自从我发表这篇文章以来,我遇到了两个问题.

首先,通过删除元标记,我似乎已经删除了对最大/最小比例的限制,这意味着点击任何< input>显示AndroID键盘的元素将导致缩放更改.幸运的是,到目前为止,在代码中添加这一行解决了这个问题:

webvIEw.getSettings().setDefaultZoom(ZoomDensity.FAR);@H_404_14@  

第二个我没有可行的解决方案,并且有些设备,例如Archos101平板电脑,有软件按钮而不是硬件按钮.此处的缩放代码将扩展到设备宽度,这意味着该站点位于软件按钮下方…当前正在考虑实现基于READ_PHONE_STATE的解决方案,或者可选择添加退出应用程序而无需硬件按钮并将其添加到清单的功能:

<uses-permission androID:name="archos.permission.FulLSCREEN.FulL" />@H_404_14@  

希望其他人能找到这个并节省一些时间.

总结

以上是内存溢出为你收集整理的通过WebView在Android设备上正确扩展网站全部内容,希望文章能够帮你解决通过WebView在Android设备上正确扩展网站所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1129665.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存