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)