package com.kescoode.xmail.ui.widget;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.kescoode.xmail.domain.internal.HtmlConverter;
import com.kescoode.xmail.domain.internal.HtmlSanitizer;
/**
* 邮件使用的WebView
*
* @author Jinsen Lin
*/
public class MailWebView extends WebView {
public MailWebView(Context context) {
super(context);
initView(context);
}
public MailWebView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public MailWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public MailWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
initView(context);
}
private void initView(Context context) {
if (isInEditMode()) {
return;
}
WebSettings webSettings = getSettings();
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setUseWideViewPort(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
if (Build.VERSION_CODES.HONEYCOMB < Build.VERSION.SDK_INT) {
webSettings.setDisplayZoomControls(false);
}
}
public void loadLocalData(String data) {
String content = "<html><head><meta name=\"viewport\" content=\"width=device-width\"/>";
content += HtmlConverter.cssStylePre();
content += "</head><body>" + data + "</body></html>";
String sanitizedContent = HtmlSanitizer.sanitize(content);
loadDataWithBaseURL("http://", sanitizedContent, "text/html", "utf-8", null);
}
/**
* Text自适应屏幕
*
* 注意,只在4.4以上版本有效
*/
@TargetApi(Build.VERSION_CODES.KITKAT)
public void textAutoSize(boolean useAlgorithm) {
WebSettings settings = getSettings();
WebSettings.LayoutAlgorithm layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL;
if(useAlgorithm) {
layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING;
}
settings.setLayoutAlgorithm(layoutAlgorithm);
}
/**
* 决定是否加载网络内容
*
* @param shouldBlockNetworkData 是否加载网络内容
*/
public void blockNetworkData(boolean shouldBlockNetworkData) {
getSettings().setBlockNetworkLoads(shouldBlockNetworkData);
}
}