Java 视口匹配屏幕宽度和大图像
我正在尝试使用WebView来显示内置多点触摸的大图像,并试图避免内存崩溃 我将webView设置为:Java 视口匹配屏幕宽度和大图像,java,android,html,webview,Java,Android,Html,Webview,我正在尝试使用WebView来显示内置多点触摸的大图像,并试图避免内存崩溃 我将webView设置为: setInitialScale(20); WebSettings settings = getSettings(); settings.setJavaScriptEnabled(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); set
setInitialScale(20);
WebSettings settings = getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
然后加载以下代码:
<head>
<meta
name="viewport"
content="width=device-width, user-scalable=yes"
/>
</head>
<body
style="margin: 0; padding: 0">
<img
alt="image"
src="THE_SRC_GOES_HERE"
id="theImage"
>
</body>
问题是,如果它加载一个中等大小的图像(例如1600x1200),效果会很好,并且图像适合屏幕宽度
但在我的示例中,如果图像大于7300x5200,则显示为放大,并且禁用了缩小
如果要测试图像,URL为:
&
注意:我不是该图像的所有者,我只是将其用于测试我认为默认情况下,您的图像仍然比视口大。试试这个
<html>
<head>
<meta
name="viewport"
content="width=device-width, user-scalable=yes"
/>
</head>
<body
style="margin: 0; padding: 0">
<img
alt="image"
src="http://www.deviantart.com/download/165022929/Wallpaper_2010_by_scrumen.png"
id="theImage"
style="width:100%"
>
</body>
</html>
不知道正确答案,但可能的walkarround可以将img max width设置为“非非常高的值”,例如加载页面时的2*screen.width如何:(收回-仍然不能正常工作)
视口=功能(宽度、高度){
var theImage=document.getElementById('theImage');
这个。宽度=宽度;
高度=高度;
this.set=函数(){
var metas=document.getElementsByTagName('meta');
对于(i=0;i我更喜欢网络开发人员,以下是在android ics浏览器上工作的代码,在网络视图中也应该如此:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="user-scalable=yes, initial-scale=1.0, width=device-width">
<style>
html,body{
width:100%;
height:100%;
margin:0;
padding:0;
}
#my-image{
width:100%;
margin:0;
padding:0;
}
</style>
</head>
<body>
<img id="my-image" src="http://gachie.blog.com/files/2011/06/tour_eiffel.jpg"/>
</body>
html,正文{
宽度:100%;
身高:100%;
保证金:0;
填充:0;
}
#我的形象{
宽度:100%;
保证金:0;
填充:0;
}
我也试过了,这是一个更大的图像(),它工作得很顺利
希望有帮助
[编辑]
由于我没有足够的空间在评论中发布,我将把它放在那里:
基本上,您需要的是在图像高度达到全屏时立即切断视口底部。您需要一些javascript来实现这一点,而且由于javascript没有缩放事件,因此不需要进行任何修改。由于android支持flash,您可以尝试获得缩放事件的解决方案。一旦缩放达到最大值根据图像比率的不同,您可以将图像的css更新为高度:100%,并将宽度设置为自动
您基本上可以约束宽度或高度,具体取决于哪个是100%。
您可能还希望在用户缩放时将高度逐步设置为100%,无论哪种方式,您都会在某个点看到“跳跃”
请看一看帖子,这可能会对您有所帮助。事实上,我做了一些有点违反直觉的事情,在ICS上实现了这一点。当其他人建议将style=“width:100%”
添加到img
标记中时,我的解决方案是实际添加style=“height:100%”
这在我的Android 4.0+设备上适用,但不幸的是,它在我的旧设备上开始部分放大(因此图像高度填充视图)
它避免了我测试的所有设备上的空白问题。
- ICS在初始完全缩小的视图上显示空间,但当您放大时,它会完全按照您的需要消失
- 在较旧的设备上,由于初始的缩放级别,下面永远不会有空白
变焦不是完美的,但要好得多。
- 在ICS上,您可以得到您想要的(匹配宽度)
- 在较旧的设备上,缩放比问题的第二个示例中得到的要容易管理得多
简言之,我已经满足了您对IC的要求,并让您在旧设备上更接近IC。如果我有其他想法,我会编辑我的答案,但这一点似乎值得分享,即使不完美。感谢您的回答,该选项的问题是,您在图像下方第一张图片中看到的白色区域就在那里即使在放大后,你也会想得到答案,但当你放大时,图像下方会留下一个很大的空白=(现在我明白你的意思了。我还没有明白。我会再试一次。谢谢你的回答,但它有相同的问题:当你放大图像时,下面的空白仍然存在。谢谢你的回答。顺便说一下,这是最好的方法。在其他版本中,获得与ICS相同的行为将是完美的
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="user-scalable=yes, initial-scale=1.0, width=device-width">
<style>
html,body{
width:100%;
height:100%;
margin:0;
padding:0;
}
#my-image{
width:100%;
margin:0;
padding:0;
}
</style>
</head>
<body>
<img id="my-image" src="http://gachie.blog.com/files/2011/06/tour_eiffel.jpg"/>
</body>