X5WebviewUtils.java
3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.polysoft.nafmii.webview;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import com.tencent.smtt.export.external.extension.interfaces.IX5WebSettingsExtension;
import com.tencent.smtt.export.external.extension.interfaces.IX5WebViewExtension;
import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView;
import com.whaty.nafmii.BuildConfig;
public class X5WebviewUtils {
public static WebView create(Context context) {
WebView webView = new WebView(context);
/** 设置透明色背景*/
webView.setBackgroundColor(0);
// 解决部分机型加载 背景为黑色问题
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
// webView.clearCache(true);
webView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG);
webView.setHorizontalScrollBarEnabled(false);//水平不显示
webView.setVerticalScrollBarEnabled(false); //垂直不显示
webView.setScrollBarSize(0);
setWebView(webView);
return webView;
}
public static void destroy(WebView webView) {
if (null == webView) {
return;
}
webView.stopLoading();
webView.clearHistory();
webView.removeAllViews();
webView.setVisibility(View.GONE);
webView.loadUrl("about:blank");
webView.destroy();
ViewGroup parent = (ViewGroup) webView.getParent();
parent.removeAllViews();
}
@SuppressLint({"SetJavaScriptEnabled", "InlinedApi"})
private static void setWebView(WebView webView) {
WebSettings settings = webView.getSettings();
/** 支持javaScript*/
settings.setJavaScriptEnabled(true);
/** 设置页面文字的编码*/
settings.setDefaultTextEncodingName("utf-8");
/** 设置webview布局方式*/
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
/** 是否允许WebView度超出以概览的方式载入页面,默认false。
* 即缩小内容以适应屏幕宽度。该项设置在内容宽度超出WebView控件的宽度时生效,
* 例如当getUseWideViewPort() 返回true时*/
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
/** 支持访问Content Provider的资源*/
settings.setAllowContentAccess(true);
/** 支持访问本地文件*/
settings.setAllowFileAccess(true);
/** 支持通过file url加载的Javascript读取本地文件*/
settings.setAllowFileAccessFromFileURLs(true);
/** 支持https/http 混合加载*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
/** 支持通过file url加载的Javascript读取全部资源(包括文件,http,https)*/
settings.setAllowUniversalAccessFromFileURLs(true);
/** 禁止页面缩放*/
settings.setBuiltInZoomControls(false);
settings.setSupportZoom(false);
/** 禁止显示缩放图标*/
settings.setDisplayZoomControls(false);
// settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
IX5WebSettingsExtension extension = webView.getSettingsExtension();
if (null != extension) {
/** 对于刘海屏机器如果webview被遮挡会自动padding */
extension.setDisplayCutoutEnable(true);
/** 正常加载显示所有图片 */
extension.setPicModel(IX5WebSettingsExtension.PicModel_NORMAL);
}
IX5WebViewExtension x5Extension = webView.getX5WebViewExtension();
if (null != x5Extension) {
//竖直快速滑块,设置null可去除
x5Extension.setVerticalTrackDrawable(null);
}
}
}