Android:来自Url的Webview中显示的图像具有高质量损失
Posted
技术标签:
【中文标题】Android:来自Url的Webview中显示的图像具有高质量损失【英文标题】:Android: Image displayed at Webview from Url with high quality loss 【发布时间】:2011-01-28 11:45:41 【问题描述】:我想在 android 上显示带有 Webview 的 url 中的图像。
使用 1.5 和 1.6 版本的 Android 手机没有问题。但是在 2.0 版的 AndroidPhone 上相同的图片和相同的代码,并且图片完全像素化。
就像 Android 首先将图像调整为较小的图像,然后将其调整回“正常”大小。
不幸的是,在没有任何质量损失的情况下显示图片很重要。
我尝试将它集成到源文件夹中以将其显示为普通图像,但在 Android 2.0 中我得到一个异常,因为图像太大。 (Android 1.6 没有问题)
任何想法如何在 Android 2.0 中显示图像而不会造成质量损失?
【问题讨论】:
您可以考虑发布相关图片的网址。 【参考方案1】:如果您还没有这样做,请将其添加到您的清单中:
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true" />
没有这个,一切都会被缩放。
另外,如果您不希望您的设备/模拟器缩放您的可绘制对象,您必须通过将更高分辨率版本放入 hdpi 文件夹来为每个密度创建可绘制对象
res/drawable-ldpi/my_icon.png // icon image for low density
res/drawable-mdpi/dpi/my_icon.png // icon for medium density
res/drawable-hdpi/my_icon.png // icon image for high density
【讨论】:
感谢您的回答,但每当我尝试添加“android:resizable=true”时都会出现错误。看来他不知道这个参数。还是我也必须添加其他东西?我尝试使用 minSdkVersion = 4。 我不认为应该有任何更多需要使 resizable=true 工作。我使用 minSdk 3 和 targetSdk=5 ......但我认为这不会有任何区别。我正在使用使用android:resizeable="true"
而不是android:resizable="true"
。
缺少"e"
。
【讨论】:
没有?这说它是resizable
: developer.android.com/guide/practices/screens_support.html【参考方案3】:
这个帖子很久了,但这是我的两分钱:
做同样的事情,我花了两天时间才弄清楚我的问题是什么:
在我的一部手机上,我使用的是 wifi,而在另一部手机上,我通过运营商连接到边缘。
事实证明,世界各地的大多数运营商都使用代理来即时缩小图像大小以减轻网络负担。瘦身难度很大,质量也很差。
所以在我的情况下,这不是我认为的框架版本,而是我使用的连接类型。
【讨论】:
我从网上下载了一张图片。如果我在 web 视图中打开本地文件,它会被像素化。如果我在图像视图中打开文件,它不再像素化,但我不能再缩放了。 这可能是因为 webview 发出的请求包含 isp 用来触发降级的 mime 类型。虽然 imageview 可能要求二进制传输。不过不确定。如您所知,可以使用您下载的图像创建一个本地 html 文件,您将在 webview 中显示该文件,从而获得缩放功能。有点麻烦,但它有效。或者你可以看看:code.google.com/p/android-pinch【参考方案4】:无论如何,我认为这是 WebView 控件的一种奇怪行为。当您通过自己的服务器提供图像时,有一个小变通方法很有用。如果图像是 PNG 格式,您可以将颜色深度设置为 8 位。虽然会降低色彩质量,但放大后图像不会模糊。
【讨论】:
确实 8 位色深有助于减少内存使用,但当图像尺寸太大时仍有机会丢失数量。以上是关于Android:来自Url的Webview中显示的图像具有高质量损失的主要内容,如果未能解决你的问题,请参考以下文章
加载时在webview中显示白页(PDF url)url android
发布到 HTTPS URL 时,Android WebView.postUrl() 显示空白屏幕