在 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的主要内容,如果未能解决你的问题,请参考以下文章