package com.secondworld.sdk.utils;
|
|
import android.annotation.SuppressLint;
|
import android.util.DisplayMetrics;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
import android.widget.RelativeLayout;
|
|
import com.secondworld.sdk.GameActivity;
|
import com.secondworld.sdk.R;
|
|
public class WebViewUtil {
|
|
public static WebViewUtil I;
|
|
RelativeLayout webContainer;
|
private WebView webView;
|
private WebView btnClose;
|
|
private boolean isShow;
|
|
private boolean isValid() {
|
return webContainer != null && btnClose != null && webView != null;
|
}
|
|
@SuppressLint("SetJavaScriptEnabled")
|
public void init(GameActivity gameActivity, RelativeLayout webContainer) {
|
this.webContainer = webContainer;
|
webView = webContainer.findViewById(R.id.webView);
|
btnClose = webContainer.findViewById(R.id.btnWebClose);
|
btnClose.setOnClickListener(v -> close());
|
close();
|
//设置大小
|
DisplayMetrics _dm = new DisplayMetrics();
|
gameActivity.getWindowManager().getDefaultDisplay().getMetrics(_dm);
|
final float scale = _dm.widthPixels * 1f / 1344;
|
final int width = (int) (scale * 982);
|
final int height = (int) (scale * 560);
|
ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(
|
webView.getLayoutParams());
|
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
|
margin);
|
layoutParams.width = width;
|
layoutParams.height = height;
|
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,
|
RelativeLayout.TRUE);
|
webView.setLayoutParams(layoutParams);
|
webView.getSettings().setJavaScriptEnabled(true);
|
webView.setWebViewClient(new WebViewClient() {
|
@Override
|
public void onPageFinished(WebView view, String url) {
|
super.onPageFinished(view, url);
|
if (isShow)
|
show();
|
}
|
|
@Override
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
if (url.startsWith("http") || url.startsWith("https")) { //http和https协议开头的执行正常的流程
|
view.loadUrl(url);
|
return true;
|
} else { //其他的URL则会开启一个Acitity然后去调用原生APP
|
return super.shouldOverrideUrlLoading(view, url);
|
}
|
}
|
});
|
}
|
|
/**
|
* 打开网页
|
*
|
* @param url 地址
|
* @param delay 是否延迟显示(加载完成才显示)
|
*/
|
public void open(String url, boolean delay) {
|
if (!isValid())
|
return;
|
webView.loadUrl(url);
|
if (!delay)
|
show();
|
}
|
|
private void show() {
|
isShow = true;
|
webContainer.setVisibility(View.VISIBLE);
|
}
|
|
public void close() {
|
if (!isValid())
|
return;
|
webView.clearFocus();
|
webView.clearCache(true);
|
webView.clearHistory();
|
webView.clearFormData();
|
isShow = false;
|
webContainer.setVisibility(View.GONE);
|
}
|
|
}
|