webview的简单使用
代码中说明;部分代码:
private WebView webview;
private ProgressBar bar;
private TextView titles;
private WebSettings settings;
private int currentSize = 2;
private int mSize;
webview = (WebView) findViewById(R.id.webview);
webview.loadUrl("http://www.baidu.com");
settings = webview.getSettings();
settings.setBuiltInZoomControls(true);
settings.setJavaScriptEnabled(true);
/**如果点击链接继续在browser中响应,而不是新开android的系统浏览器中响应该链接必须覆盖该方法*/
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
bar.setVisibility(View.VISIBLE);
bar.setProgress(newProgress);
if (newProgress == 100) {
bar.setVisibility(View.INVISIBLE);
}
super.onProgressChanged(view, newProgress);
}
@Override
public void onReceivedTitle(WebView view, String title)
{
titles.setText(title);
super.onReceivedTitle(view, title);
}
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("警告");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
});
builder.setCancelable(false);
builder.create();
builder.show();
return true;
}
});
}
/**点击按钮时,弹出设置页面字体大小的对话框*/
public void sizes(View view) {
showDialog();
}
public void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("设置字体");
String items[] = { "超大号字体", "大号字体", "正常字体", "小号字体", "超小号字体" };
builder.setSingleChoiceItems(items, currentSize, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mSize = which;
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (mSize) {
case 0:
settings.setTextZoom(200);
break;
case 1:
settings.setTextZoom(150);
break;
case 2:
settings.setTextZoom(100);
break;
case 3:
settings.setTextZoom(80);
break;
case 4:
settings.setTextZoom(50);
break;
}
currentSize = mSize;
}
});
builder.setNegativeButton("取消", null);
builder.show();
}
/**
* 如果不做处理,进入webview浏览网页,当点击返回按钮时,会直finsh()结束本身;
*
* 如果浏览的网页希望回退而不是退出浏览器,需在当前activity中处理并消费掉该back事件
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}