package com.ui.view.web;
import android.content.Context;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
/**
* Created by Jerry on 2019/5/7 2:01 PM
*/
public class WebView extends android.webkit.WebView {
public WebView(Context context) {
super(context);
init();
}
public WebView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public WebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public WebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
public WebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing) {
super(context, attrs, defStyleAttr, privateBrowsing);
init();
}
@Override
public void loadData(String data, @Nullable String mimeType, @Nullable String encoding) {
super.loadData(adjustDevice(data), mimeType, encoding);
}
@Override
public void loadDataWithBaseURL(@Nullable String baseUrl, String data, @Nullable String mimeType, @Nullable String encoding, @Nullable String historyUrl) {
super.loadDataWithBaseURL(baseUrl, adjustDevice(data), mimeType, encoding, historyUrl);
}
private void init() {
WebSettings settings = getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setSupportZoom(false);
settings.setBuiltInZoomControls(false);
settings.setDisplayZoomControls(false);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
}
private String adjustDevice(String data) {
Document document = Jsoup.parse(data);
Element meta = document.createElement("meta");
meta.attr("name", "viewport");
meta.attr("content", "width=device-width");
document.getElementsByTag("head").get(0).appendChild(meta);
String html = document.html();
return html;
}
}