在 WebView 中加载 gif 不适应 WebView

Posted

技术标签:

【中文标题】在 WebView 中加载 gif 不适应 WebView【英文标题】:Loading gif in WebView not adjusting to WebView 【发布时间】:2018-08-12 09:36:14 【问题描述】:

我正在尝试将 gif 加载到 WebView,它工作正常,但问题是我看到了这个:

问题是我可以滚动并且在WebView 中看不到完整的 .gif。

我的html 是:

<html style="margin: 0;">
<body style="margin: 0;">
<img src="tuto1.gif" style="width: 40%; height: 70%" />
</body>
</html>

我在xml文件中的WebView

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:padding="@dimen/activity_horizontal_margin">


    <FrameLayout
        android:layout_
        android:layout_>
        <WebView
            android:id="@+id/webViewPager"
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter" />
    </FrameLayout>
    <LinearLayout
        android:layout_
        android:layout_
        android:layout_gravity="bottom"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="@dimen/activity_horizontal_margin">

        <TextView
            android:id="@+id/section_label"
            style="@style/TextAppearance.AppCompat.Headline"
            android:layout_
            android:layout_
            android:textColor="@android:color/white"
            tools:text="Page One" />

        <TextView
            style="@style/TextAppearance.AppCompat.Body1"
            android:layout_
            android:layout_
            android:layout_marginTop="@dimen/activity_horizontal_margin"
            android:id="@+id/tv_description"
            android:alpha="0.7"
            android:gravity="center"
            android:textColor="@android:color/white" />
    </LinearLayout>

</FrameLayout>

我在下面显示这个html

WebView wv = rootView.findViewById(R.id.webViewPager);
wv.loadUrl("file:///android_asset/tuto1.html");
wv.setBackgroundColor(Color.TRANSPARENT);

注意:我的 .gif 是 330 x 750

我的目标是什么?

我想在屏幕上的那个空间看到我的 .gif,我不希望它可以滚动我想显示完整的“网络”。

我也尝试过 Glide,但是当我将 .gif 放入 ImageView 时,它会滞后很多,这就是我使用 webView 的原因。

【问题讨论】:

【参考方案1】:

我相信你应该尝试使用这个https://github.com/koral--/android-gif-drawable,而不是浪费时间玩臭名昭著的 Android 容易出错的 webview。

【讨论】:

你能举个例子吗?从 .raw 获取 .gif?如果可行,我会将您的答案标记为正确。 无法获取,“从 .raw 获取 .gif”是什么意思?这里的“.raw”是什么?看看上面的库,它可以与 .gif 文件一起使用,就像其他普通的可绘制图片文件(.png、.jpg) 并请编辑您的问题,在图片中添加一些文字,例如以阐明 gif 图像在哪里,寻呼机在哪里,您真正想做什么...bla bla,否则别人帮不了你。【参考方案2】:

我相信你的问题可以用 css 解决 检查这个answer

将此样式用于Body 标签:

overflow: hidden;

【讨论】:

我这样做了:什么也没发生【参考方案3】:

试试这个:

WebSettings settings = webView.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

https://developer.android.com/guide/webapps/targeting.html#Metadata

【讨论】:

那是什么?什么设置? 我看到了差异,但它没有调整...我看不到完整的 gif 那么,你看到了什么? 较少缩放但不是全部图像【参考方案4】:
 <html>
    <body style="padding:0px;margin:0px;">
      <img src="tuto1.gif" style="width: 100%; height: 100%" />
   </body>
</html>


 <WebView
            android:id="@+id/webViewDetail"
            android:layout_
            android:layout_>

</WebView>




        webViewDetail.clearCache(true);
        webViewDetail.clearHistory();
        webViewDetail.clearFormData();


        WebSettings webSettings = webViewDetail.getSettings();
        // To enable java script on page.
        webSettings.setjavascriptEnabled(true);
        webSettings.setAllowContentAccess(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setDomStorageEnabled(true);
        //To always load page from web server, not to use resources from cache.
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

        String absoulteFileUrlPath = "file://" + singleFile.getAbsolutePath();
        webViewDetail.loadUrl(absoulteFileUrlPath);

【讨论】:

如果我按照您的步骤进行操作,但它会覆盖其余视图...我想将 WebView 设置为例如 250x200 并在其上放置图像 gif...是否可以而不是使用 matchparent? 为webview分配高度和宽度 如果我这样做,我可以在 webview 上滚动 我不想让它滚动!我只想要 220dpx250dp 的 WebView FIT 并在这些空间中查看完整图像 那么你需要为webview分配高度和宽度

以上是关于在 WebView 中加载 gif 不适应 WebView的主要内容,如果未能解决你的问题,请参考以下文章

在 webview 中加载 URL 时面临问题

在初始化程序中加载 webview 内容

webview 正在模拟器中加载,但未在设备中加载

在webview android中加载本地html文件

Android-WebView中加载本地html的方法

无法在 webview 中加载 url