Android,在将.gif加载到Webview时如何去除多余的空白区域
我在这里阅读了很多主题,但显然没有提供的解决方案按照我的意图按100%工作。 我只想加载动画图像(.gif文件)。 这是我的:
template.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml";
xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
[CONTENT]
</body>
</html>
style.css文件
html, div, body, img {
margin: 0;
padding: 0;
}
main.xml(webview是如何定义的)
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"/>
视图创建过程中 - java代码
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
我有两个解决方案对我来说几乎是完美的,所以首先是使用WebView.LoadUrl(filePath) ,在这种情况下,在图片之间切换后,我在图片下方获得了额外的空白区域,当我重复图片加载过程时它最终会摆脱白色空间。 这是第一个解决方案:
加载方法 //我知道,加载空白页面和清除视图具有相同的结果,但无论如何,我正在尝试一切......
webView.loadUrl("about:blank");
webView.clearView();
webView.clearCache(true);
webView.loadUrl("file:///android_res/raw/" + currentPicName +".gif");
第二种解决方案有点不同,因为它使用template.html与视口和style.css基本上我所做的就是使用它们与WebView.loadDataWithBaseUrl(...) ,但在这种情况下,我得到更少的底部额外的空白(几乎没有,看起来像填充/边距),但在狭窄图像的情况下,我会在右侧获得额外的空白区域......另外,当我在不同大小的图像之间切换时,我经常会在底部获得额外的空白区域,重复加载过程甚至一次通常解决它。
webView.loadUrl("about:blank");
webView.clearView();
webView.clearCache(true);
try
{
InputStream is = getResources().getAssets().open("template.html");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String content = "<img src='"+currentPicName+".gif'/>";
webView.loadDataWithBaseURL("file:///android_res/raw/",
new String(buffer).replace("[CONTENT]", content),
"text/html", "UTF-8", null);
} catch (IOException e)
{
e.printStackTrace();
}
另外值得一提的是,无论何时加载新图片,我经常会在1 ms内看到旧图片在其下方闪烁,因此可能旧图不会被正确清除,并且某些大小会被缓存,因为添加了空白区域只有当从较大的图像更改为较小时。 所以也许解决方法是以某种方式将所有.gifs调整为一个常见大小,同时保留它们的动画,但不知道如何实现这一点。
在此先感谢您提供任何答案/提示,如果您需要更多有关情况的细节,请随时提问! 为了测试目的,我使用Android 4.1.2手机,目标API是16我相信。
链接地址: http://www.djcxy.com/p/89297.html上一篇: Android, how to remove extra white space when loading .gif into Webview
下一篇: Background color for below footer only (unknown height of area)