Android個人總結(jié)之WebView的簡單使用

WebView在Andorid中就是用來顯示網(wǎng)頁的具练,我們來看看它是如何使用的乍构。

一、基本使用

1.聲明權(quán)限,WebView不可避免地要用到網(wǎng)絡(luò)哥遮,我們要加上網(wǎng)絡(luò)訪問權(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

這時你會發(fā)現(xiàn),應(yīng)用會自動跳出系統(tǒng)或第三方瀏覽器眠饮,也就是說你無法在自己的應(yīng)用中顯示自己的網(wǎng)頁奥帘。怎么辦呢?接下來介紹WebView兩個重要的監(jiān)聽事件仪召。

二寨蹋、WebViewClient與WebChromeClient

webView.setWebViewClient()主要用于加載網(wǎng)頁過程的監(jiān)聽。

webView.setWebViewClient(new WebViewClient(){
    @Override
    //只要重寫此方法扔茅,就能在本應(yīng)用中加載網(wǎng)頁
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;//返回值時true的時候控制網(wǎng)頁在WebView中去打開已旧,如果為false調(diào)用系統(tǒng)瀏覽器或第三方瀏覽器
    }
   @Override  
   public void onReceivedError(WebView view, int errorCode,  
      String description, String failingUrl) {  
//收到錯誤信息的時候,系統(tǒng)執(zhí)行此操作.
//比如當(dāng)出現(xiàn)404錯誤碼時召娜,我們可以自己寫個html放在asset文件夾中运褪,把webView隱藏掉而顯示本地的網(wǎng)頁。
        }  
  
        @Override  
        public void onPageStarted(WebView view, String url, Bitmap favicon) {  
            super.onPagStarted(view, url, favicon);  
            //若想在網(wǎng)頁開始加載時執(zhí)行一些操作玖瘸,重寫該方法 
        }  
  
        @Override  
        public void onPageFinished(WebView view, String url) {  
            super.onPageFinished(view, url);  
            //若想在網(wǎng)頁結(jié)束時執(zhí)行一些操作秸讹,重寫該方法 
        } 
}
);

webView.setWebChromeClient()主要用于加載網(wǎng)頁過程對UI的操作。

webView.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        progressBar.setProgress(newProgress);
//newProgress的值為1到100的整數(shù)店读,我們可以利用這個參數(shù)使用ProgressBar或ProgressDialog顯示加載進(jìn)度
        } 
   }
    @Override
    public void onReceivedTitle(WebView view, String title) { 
       textView.setText(title);//參數(shù)title為網(wǎng)頁的標(biāo)題嗦枢,可以用一個textView來顯示攀芯。
   }
}
);

好了屯断,我們來看看網(wǎng)頁加載的情況。


247663169532307420.jpg

看起來網(wǎng)頁加載得很好侣诺,其實我已經(jīng)設(shè)置了一些相關(guān)屬性殖演。我們來看看WebView 有哪些屬性

三、WebSettings

WebSettings settings=webView.getSettings();
//支持JavaScript腳本
settings.setJavaScriptEnabled(true);
//設(shè)置WebView支持廣泛的視窗  
settings.setUseWideViewPort(true); 
//支持手勢縮放  
settings.setBuiltInZoomControls(true); 
//設(shè)置WebView 支持加載更多格式頁面  
settings.setLoadWithOverviewMode(true);
//WebView加載頁面優(yōu)先使用緩存加載 
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

還有一些屬性我就不講出來了年鸳,有興趣的自己搜一下趴久。

四、下載文件

webview中有時含有下載文件的鏈接搔确,點(diǎn)擊鏈接后文件會被下載到本地中彼棍。如何實現(xiàn)呢?系統(tǒng)為我們提供了一個下載接口DownloadListener膳算,代碼簡單而方便座硕。
我們只要寫一個類實現(xiàn)此接口并重寫方法,通過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)聽器

webView.setDownloadListener(new MyListenter());

我們借助了第三方瀏覽器進(jìn)行下載涕蜂,這是最簡單的做法
點(diǎn)擊Android下載,效果如下


20633713252534019.jpg

或者我們可以寫一個線程進(jìn)行下載华匾,在onDownloadStart()方法中啟動線程就可以了,具體代碼就不貼上來了机隙。

好了蜘拉,所有內(nèi)容差不多就這樣萨西,總結(jié)一下用法。
使用前記得申明權(quán)限旭旭,控件的引用就不用說了谎脯。
重點(diǎn)在于WebViewClient與WebChromeClient兩個類。
webView.setWebViewClient()主要用于加載網(wǎng)頁過程的相關(guān)操作持寄。
webView.setWebChromeClient()則用于加載網(wǎng)頁過程對UI的操作穿肄。
系統(tǒng)還我們提供了一個下載接口DownloadListener。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末际看,一起剝皮案震驚了整個濱河市咸产,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仲闽,老刑警劉巖脑溢,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赖欣,居然都是意外死亡屑彻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門顶吮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來社牲,“玉大人,你說我怎么就攤上這事悴了〔簦” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵湃交,是天一觀的道長熟空。 經(jīng)常有香客問我,道長搞莺,這世上最難降的妖魔是什么息罗? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮才沧,結(jié)果婚禮上迈喉,老公的妹妹穿的比我還像新娘。我一直安慰自己温圆,他們只是感情好挨摸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捌木,像睡著了一般油坝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天澈圈,我揣著相機(jī)與錄音彬檀,去河邊找鬼。 笑死瞬女,一個胖子當(dāng)著我的面吹牛窍帝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诽偷,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼坤学,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了报慕?” 一聲冷哼從身側(cè)響起深浮,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眠冈,沒想到半個月后飞苇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜗顽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年布卡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雇盖。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡忿等,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崔挖,到底是詐尸還是另有隱情贸街,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布虚汛,位于F島的核電站匾浪,受9級特大地震影響皇帮,放射性物質(zhì)發(fā)生泄漏卷哩。R本人自食惡果不足惜狂男,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一琉历、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧院刁,春花似錦渐白、人聲如沸尊浓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栋齿。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓦堵,已是汗流浹背基协。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菇用,地道東北人澜驮。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像惋鸥,于是被迫代替她去往敵國和親杂穷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容