Android開(kāi)發(fā)中WebView的簡(jiǎn)單使用小結(jié)
前言
WebView(網(wǎng)絡(luò)視圖)在Andorid中就是用來(lái)顯示網(wǎng)頁(yè)的,下面我們來(lái)一起看看它是如何使用的。
一、基本使用
1.聲明權(quán)限,WebView不可避免地要用到網(wǎng)絡(luò),我們要加上網(wǎng)絡(luò)訪問(wèn)權(quán)限。
<uses-permission android:name="android.permission.INTERNET"/>
2.放入Layout
<WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/web">
3.在Activity中引用
private WebView webView;
webView = (WebView) findViewById(R.id.web);
webView.loadUrl("http://piaoshu.org");
//webView.loadUrl("file:///android_asset/xx.html");也可以加載本地的html
這時(shí)你會(huì)發(fā)現(xiàn),應(yīng)用會(huì)自動(dòng)跳出系統(tǒng)或第三方瀏覽器,也就是說(shuō)你無(wú)法在自己的應(yīng)用中顯示自己的網(wǎng)頁(yè)。怎么辦呢?接下來(lái)介紹WebView兩個(gè)重要的監(jiān)聽(tīng)事件。
二、WebViewClient與WebChromeClient
webView.setWebViewClient()主要用于加載網(wǎng)頁(yè)過(guò)程的監(jiān)聽(tīng)。
webView.setWebViewClient(new WebViewClient(){
@Override
//只要重寫(xiě)此方法,就能在本應(yīng)用中加載網(wǎng)頁(yè)
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;//返回值時(shí)true的時(shí)候控制網(wǎng)頁(yè)在WebView中去打開(kāi),如果為false調(diào)用系統(tǒng)瀏覽器或第三方瀏覽器
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
//收到錯(cuò)誤信息的時(shí)候,系統(tǒng)執(zhí)行此操作.
//比如當(dāng)出現(xiàn)404錯(cuò)誤碼時(shí),我們可以自己寫(xiě)個(gè)html放在asset文件夾中,把webView隱藏掉而顯示本地的網(wǎng)頁(yè)。
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPagStarted(view, url, favicon);
//若想在網(wǎng)頁(yè)開(kāi)始加載時(shí)執(zhí)行一些操作,重寫(xiě)該方法
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//若想在網(wǎng)頁(yè)結(jié)束時(shí)執(zhí)行一些操作,重寫(xiě)該方法
}
}
);
webView.setWebChromeClient()主要用于加載網(wǎng)頁(yè)過(guò)程對(duì)UI的操作。
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
progressBar.setProgress(newProgress);
//newProgress的值為1到100的整數(shù),我們可以利用這個(gè)參數(shù)使用ProgressBar或ProgressDialog顯示加載進(jìn)度
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
textView.setText(title);//參數(shù)title為網(wǎng)頁(yè)的標(biāo)題,可以用一個(gè)textView來(lái)顯示。
}
}
);
好了,我們來(lái)看看網(wǎng)頁(yè)加載的情況。

看起來(lái)網(wǎng)頁(yè)加載得很好,其實(shí)我已經(jīng)設(shè)置了一些相關(guān)屬性。我們來(lái)看看WebView 有哪些屬性
三、WebSettings
WebSettings settings=webView.getSettings();
//支持JavaScript腳本 settings.setJavaScriptEnabled(true);
//設(shè)置WebView支持廣泛的視窗 settings.setUseWideViewPort(true);
//支持手勢(shì)縮放 settings.setBuiltInZoomControls(true);
//設(shè)置WebView 支持加載更多格式頁(yè)面 settings.setLoadWithOverviewMode(true);
//WebView加載頁(yè)面優(yōu)先使用緩存加載 settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
還有一些屬性我就不講出來(lái)了,有興趣的自己搜一下。
四、下載文件
webview中有時(shí)含有下載文件的鏈接,點(diǎn)擊鏈接后文件會(huì)被下載到本地中。如何實(shí)現(xiàn)呢?系統(tǒng)為我們提供了一個(gè)下載接口DownloadListener,代碼簡(jiǎn)單而方便。
我們只要寫(xiě)一個(gè)類(lèi)實(shí)現(xiàn)此接口并重寫(xiě)方法,通過(guò)Intent調(diào)用系統(tǒng)的瀏覽器
class MyListenter implements DownloadListener{
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url); //url即下載鏈接
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
別忘了設(shè)置監(jiān)聽(tīng)器
webView.setDownloadListener(new MyListenter());
我們借助了第三方瀏覽器進(jìn)行下載,這是最簡(jiǎn)單的做法
點(diǎn)擊Android下載,效果如下

或者我們可以寫(xiě)一個(gè)線程進(jìn)行下載,在onDownloadStart()方法中啟動(dòng)線程就可以了,具體代碼就不貼上來(lái)了。
總結(jié)一下用法。
使用前記得申明權(quán)限,控件的引用就不用說(shuō)了。
重點(diǎn)在于WebViewClient與WebChromeClient兩個(gè)類(lèi)。
webView.setWebViewClient()主要用于加載網(wǎng)頁(yè)過(guò)程的相關(guān)操作。
webView.setWebChromeClient()則用于加載網(wǎng)頁(yè)過(guò)程對(duì)UI的操作。
系統(tǒng)還我們提供了一個(gè)下載接口DownloadListener。
以上就是這篇文章的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
- Android開(kāi)發(fā)之WebView組件的使用解析
- Android開(kāi)發(fā)筆記之探秘WebView
- Android開(kāi)發(fā)中使用WebView控件瀏覽網(wǎng)頁(yè)的方法詳解
- Android應(yīng)用開(kāi)發(fā)中WebView的常用方法筆記整理
- Android WebView 應(yīng)用界面開(kāi)發(fā)教程
- Android開(kāi)發(fā)學(xué)習(xí)筆記 淺談WebView
- Android程序開(kāi)發(fā)之WebView使用總結(jié)
- Android開(kāi)發(fā)中WebView的詳細(xì)使用方法和常見(jiàn)操作
相關(guān)文章
Android獲得當(dāng)前正在顯示的activity類(lèi)名的方法
這篇文章主要介紹了Android獲得當(dāng)前正在顯示的activity類(lèi)名的方法,分析了權(quán)限的修改與Java代碼的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
Android Studio+Servlet+MySql實(shí)現(xiàn)登錄注冊(cè)
對(duì)于大多數(shù)的APP都有登錄注冊(cè)這個(gè)功能,本文就來(lái)介紹一下Android Studio+Servlet+MySql實(shí)現(xiàn)登錄注冊(cè),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
android LinearLayout和RelativeLayout組合實(shí)現(xiàn)精確布局方法介紹
用android LinearLayout和RelativeLayout實(shí)現(xiàn)精確布局此方法適合很適合新人看2012-11-11
Android利用Canvas標(biāo)點(diǎn)畫(huà)線并加入位移動(dòng)畫(huà)(1)
這篇文章主要為大家詳細(xì)介紹了Android利用Canvas標(biāo)點(diǎn)畫(huà)線并加入位移動(dòng)畫(huà)的第一篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
Android使用Intent隱式實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Android使用Intent隱式來(lái)實(shí)現(xiàn)向上跳轉(zhuǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android下Activity間通信序列化過(guò)程中的深淺拷貝淺析
這篇文章主要給大家介紹了關(guān)于Android下Activity間通信序列化過(guò)程中深淺拷貝的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Android實(shí)現(xiàn)類(lèi)似360,QQ管家那樣的懸浮窗
用到的就是WindowManager以及WindowManager.LayoutParams,對(duì)這個(gè)LayoutParams做文章,當(dāng)設(shè)置為屬性后,然后,創(chuàng)建一個(gè)View,將這個(gè)View添加到WindowManager中就行2013-06-06
Android 自定義布局豎向的ViewPager的實(shí)現(xiàn)
這篇文章主要介紹了Android 自定義布局豎向的ViewPager的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android如何禁止向EditText控件中輸入內(nèi)容詳解
EditText是接受用戶(hù)輸入信息的最重要控件。下面這篇文章主要給大家介紹了關(guān)于Android如何禁止向EditText控件中輸入內(nèi)容的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09

