public void openWebView() {
// 创建并加载
m_layout = new LinearLayout(SimpleGame.this);
WebActivity.this.addContentView(m_layout , new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
m_webView = new WebView(WebActivity.this);
// 设置webView能够执行javascript脚本
m_webView.getSettings().setJavaScriptEnabled(true);
// 使页面获得焦点
// mWebView.requestFocus();
// 如果页面中链接,如果希望点击链接继续在当前browser中响应,监听网页加载情况
m_webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view,String url) {
if (url.indexOf("tel:") < 0) {
view.loadUrl(url);
}
return true;
}
@Override // 开始加载
public void onPageStarted(WebView view, String url,Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override // 加载完成
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (!isError) {
isSuccess = true;
// 回调成功后的相关操作
showWebView();
AndroidApi.sayHello(Content.CMD_CTJ_OPEN_SMALL_WEB, "1");
} else {
removeWebView();
AndroidApi.sayHello(Content.CMD_CTJ_OPEN_SMALL_WEB, "0");
}
isError = false;
}
@Override // 加载出错
public void onReceivedError(WebView view,int errorCode, String description,String failingUrl) {
super.onReceivedError(view, errorCode, description,
failingUrl);
isError = true;
isSuccess = false;
AndroidApi.sayHello(Content.CMD_CTJ_OPEN_SMALL_WEB, "0");
removeWebView();
}
});
// 初始化时隐藏webView,防止未加载完成时,显示一个空白的webView;
// 但是这句在模拟器上正常显示,在真机上会导致网页显示不出来
// hideWebView();
m_layout.addView(m_webView);
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) m_webView.getLayoutParams();
// 可选的webview位置,X,Y,W,H可任意填写,也可以做为函数参数传入,适配屏幕
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
// 如果游戏按照横向纵向拉伸适配,则为:
double HScale = height / 640.0;
double WScale = width / 1136.0;
linearParams.leftMargin = (int) (X * WScale);
linearParams.topMargin = (int) (Y * HScale);
// linearParams.width = (int) (W * WScale);
// linearParams.height = (int) (H * HScale);
linearParams.rightMargin(
width - (int)((X+W)
* WScale));
linearParams.bottomMargin(
height - (int)((Y+H) *
HScale
));
// linearParams.setMargins((int)dis_w, (int)dis_h, (int)dis_w, (int)dis_h);
m_webView.setLayoutParams(linearParams);
// 可选的webview配置
m_webView.setBackground(AndroidApi.mainActivity.getResources().getDrawable(R.drawable.base_dialog_corner_bg));
m_webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
m_webView.getSettings().setAppCacheEnabled(false);
}
}