使用
初始化
- Application 中初始化 X5 内核
//X5内核初始化
TMFX5Core.getInstance().init(context);
//初始化结果监听
TMFX5Core.getInstance().onX5CoreInited(new ValueCallback<Boolean>() {
@Override
public void onReceiveValue(Boolean value) {
if(value){
L.d("X5初始化成功");
}else {
L.e("X5初始化失败");
}
}
});
- 自定义基于 X5 的 webview 组件,参考代码如下:
/**
* 业务侧拓展的WebView,可自行拓展能力
*/
public class X5SampleWebView extends WebView {
public X5SampleWebView(Context context) {
super(context);
}
}
- 创建 X5WebViewClient,参考代码如下:
/**
* 业务侧需要的WebViewClient例子,需要可以拓展更多能力
*/
public class X5WebClientDemo extends DefaultTMFX5WebViewClient {
@Override
public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon){
//注意super.onPageStarted不能删除
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
//注意super.onPageFinished不能删除
super.onPageFinished(view, url);
}
}
- 创建 X5WebChromeClient,参考代码如下:
/**
* 业务需要的WebChromeClient
*/
public class X5WebChromeClientDemo extends DefaultTMFX5WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
//注意super.onProgressChanged不能删除
super.onProgressChanged(view, newProgress);
}
}
- 初始化 Webview 组件。
/**
* 获取WebView实例
* @return
*/
private static WebView createX5WebView(Context context){
X5SampleWebView webView = new X5SampleWebView(context);
//config webview settings
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.removeJavascriptInterface("searchBoxJavaBridge_");
webSettings.setAllowContentAccess(true);
webSettings.setDatabaseEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setLoadWithOverviewMode(true);
return webView;
}
- 创建 H5 容器,参考代码如下:
ITMFWeb mWebContainer = TMFWeb.withX5(activity)
.setWebView(new DefaultTMFX5WebView(createX5WebView(activity)))//必须设置
.setWebViewClient(new X5WebClientDemo())//必须设置,须是DefaultTMFX5WebViewClient的子类
.setWebChromeClient(new X5WebChromeClientDemo())//必须设置,须是DefaultTMFX5WebChromeClient的子类
.setWebContainerReporter(new WebViewReporter())//设置H5容器上报器(可选)
.build();
- 将 WebView 添加到页面视图中,参考代码如下:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
mContainer.addView((ViewGroup) mWebContainer.getWebViewHolder().getWebView(), params);
mContainer 为 xml 页面中的一个布局,如 LinearLayout、FraneLayout 等。
- 在 Activity 和 Fragment 的生命周期中管理 H5 容器,参考代码如下:
@Override
public void onResume() {
super.onResume();
if (mWebContainer != null) {
mWebContainer.onResume();
}
}
@Override
public void onStop() {
super.onStop();
if (mWebContainer != null) {
mWebContainer.onStop();
}
}
@Override
public void onPause() {
super.onPause();
if (mWebContainer != null) {
mWebContainer.onPause();
}
}
@Override
public void onDestroy() {
if (mWebContainer != null) {
mWebContainer.onDestroy();
}
super.onDestroy();
}