现在H5这么火,你在不会使用WebView 你就OUT了。
今天研究了一天WebView的视频播放功能,可能我的理解能力差,所以研究时间长了点。现在分享一下我的学习经历。
这是一些基本的使用方法
<span style="white-space:pre"> </span>/*mWebView.goBack(); //后退
mWebView.goForward();//前进
mWebView.reload(); //刷新*/
mWebView.loadUrl(toUrl);
//设置当前在webView中显示
mWebView.setWebViewClient(mWebViewClient);
//设置获得当前加载进度;
mWebView.setWebChromeClient(mWebChromeClient);
//如果当前显示页面有输入框时可以获得焦点
mWebView.requestFocus();
//滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上
mWebView.setScrollBarStyle(0);
//获得WebView的设置项;
mWebSettings = mWebView.getSettings();
//设置编码格式
mWebSettings.setDefaultTextEncodingName("GBK");//设置字符编码
//设置WebView是否需要进行缓存
mWebSettings.setCacheMode(WebSettings.LOAD_NO_CAHE)//关闭缓存;WebSettings.LOAD_CACHE_ELSE_NETWORK;开启缓存
//设置开启JS
mWebSettings.setJavaScriptEnabled(true);
//把图片加载放在最后来加载渲染
mWebSettings.setBlockNetworkImage(false);
//listview,webview中滚动拖动到顶部或者底部时的阴影
mWebView.setOverScrollMode(View.OVER_SCROLL_NEVER);
下面试设置前需要启动支持js
mWebSettings = mWebView.getSettings();
mWebSettings.setJavaScriptEnabled(true);
private WebChromeClient mWebChromeClient = new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
//设置当前加载的进度
if (newProgress == 100) {
//加载完成
} else {
//正在加载一般会在这里显示一个dialog提示加载进度;一般会隐藏WebView等到加载完毕显示;
}
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
//当点击全屏显示时调用该方法
//这个方法适用于在WebView里 播放视频时,点击全屏播放,调用该接口;
}
@Override
public void onHideCustomView() {
super.onHideCustomView();
//在全屏情况下 点击小屏幕显示调用该方法;
}
};
//为WebView设置该属性;
mWebView.setWebChromeClient(mWebChromeClient);
如果不设置这个属性,WebView.loadUrl(url); WebView加载网络地址时会跳转到浏览器加载,而不是在本页面的WebView加载;
我用的是Android5.0系统,不加下面代码也是在WebView中加载,只是看到网络有人说会跳转到浏览器;所以我也就这么说了。可能不对,待考证;
private WebViewClient mWebViewClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//设置在webView中显示而不是在第三方浏览器中打开
Log.i(TAG, "shouldOverrideUrlLoading: url ---> " + url);
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//页面加载完毕后回调的方法
}
@Override
public void onPageStarted(WebView view,String url,Bitmap favicon){
super.onPageStarted(view,url,favicon)
//要加载页面的时候调用该方法;
}
};
mWebView.setWebViewClient(mWebViewClient);
以上代码是基础了解的,以后肯定会用到的,下面代码是 在WebView中的页面点击进入另一个页面,当点击back,也就是返回键时,返回上一个页面;
这个存在一定的bug 有的页面,有的时候返回到首页后,在按返回键,重复加载同一个页面。
我想一个主意就是将每次跳转的页面存入一个list集合中,每次按返回键跳转回上个页面,但这是很蠢的方法,加入着急实现该功能,就先对付一下,打好标记等想到好的办法在该回来。
<pre name="code" class="java"> 这个方法是放在Activity当中的
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//当前点击的是返回键
if (mWebView.canGoBack()){
//判断当前是否可以继续返回
//返回上一个页面;
mWebView.goBack();
}else {
//WebView已经到达首页
//可以进行结束语句,如finsh()关闭当前Activity 也可以做别的;
}
return true;
}
return super.onKeyDown(keyCode, event);
}
目前对WebView的基本属性已经进行了解了,如加载页面时,显示dialog,返回键,跳转上一个页面;
下次分析如何使用WebView实现全屏切换,是在WebView中进行切换哦!!!