使用WebView显示网页
WebView本身就是一个浏览器实现,其内核是基于Webkit 引擎,,如若甲乙美化可以开发自己的浏览器
常用方法
void goBack()后退
void goForward()前进
void loadUrl(String url)加载指定url对应网页
boolean zoomIn()放大网页
boolean zoomOut()缩小网页
获取网络状态
//loadUrl(String url)方法:加载指定URL对应的网页
webView.loadUrl("http://www.baidu.com");
}
/**
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
textViewDetail.setText("连接方式为:" + info.getTypeName());
} else {
textViewDetail.setText("无网络连接");
}
break;
default:
break;
}
}
设置网页缩放等功能
//设置WebView的一些缩放功能点
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.getSettings().setSupportZoom(true);
//设置WebView可触摸放大缩小
webView.getSettings().setBuiltInZoomControls(true);
webView.setInitialScale(70);
webView.setHorizontalScrollbarOverlay(true);
//WebView双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小
webView.getSettings().setUseWideViewPort(true);
//提高渲染的优先级
//webView.getSettings().setRenderPriority(RenderPriority.HIGH);
//允许JS执行
webView.getSettings().setJavaScriptEnabled(true);
设置进度条显示网页加载速度
首先在XML文件中设置为不可见
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:visibility="invisible"/>
然后在代码中实现两个方法
webView.setWebViewClient(new WebViewClient() {
//设置开始进度条显示
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
//设置结束后进度条不可见
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.INVISIBLE);
}
自定义没网状态的页面
首先看一下默认界面
//自定义没网状态的页面
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
webView.setVisibility(View.GONE);
textViewDetail.setText("加载失败");
textViewDetail.setVisibility(View.VISIBLE);
}
});
设置后可以通过textView 显示文字提示信息
解决页面覆盖问题,通过返回键回到上一界面
/**
* @param keyCode KEYCODE_BACK
* @param event KEYCODE_BACK
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
} else {
finish();
}
}
return super.onKeyDown(keyCode, event);
}
}