WebView随学笔记
对于WebView而言我们需要掌握的内容是:
/** 学习目标:webView * 1).将WebView加入到应用中 * 2).使用WebView加载页面 * 3).获取网络访问 * 4).在WebView中使用Javascript * 5).处理页面导航 * 6).后退与前进 * 7).判断页面加载过程 * 8).WebView缓存的运用 */
对此一一记录
1).加入WebView: XML布局文件中添加&在Activity中绑定
<WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" />
2).使用WebView加载页面:使用webview.loadUrl(url)方法
webview.loadUrl("http://www.baidu.com");
3).获取网络访问权限:在AndroidManifest.xml文件中添加
<uses-permission android:name="android.permission.INTERNET"/>
整文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.as.webviewtest"> <!--网络权限--> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
4).在WebView中使用JavaScript
需要获取一个WebSettings的实例,调用其方法setJavaScriptEnabled(true);
代码:
WebSettings ws=webview.getSettings(); ws.setJavaScriptEnabled(true);
5).处理页面导航,不使用系统本地浏览器或第三方浏览器(需要在获取网络访问权限的前提下):
调用webview.setWebViewClient(new WebViewClient(){});通过重写方法来修改
代码:
webview.setWebViewClient(new WebViewClient(){ //重写方法 public boolean shouldOverrideUrlLoading(WebView view, String url) { //true在WebView中打开,false在系统或第三方浏览器中打开 view.loadUrl(url); return true; } });
6).后退与前进:
重写onKeyDown事件,主要是webview的goback()和goforward()方法
代码:
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK){ if(webview.canGoBack()){ webview.goBack(); return true; }else{ System.exit(0); } }
7).判断页面加载过程:
调用&重写
代码:
webview.setWebChromeClient(new WebChromeClient(){ public void onProgressChanged(WebView view,int newProgress){ if(newProgress==0){ //加载完成 }else{ //加载中 } } });
8).缓存的运用:
WebSettings.setCacheMode(传入预置参数即可);
参数有: