日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

webview代码实例化_WebView常用类和基本方法详解

發(fā)布時(shí)間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webview代码实例化_WebView常用类和基本方法详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
上一篇文章我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的WebView,并且能夠在程序中的不調(diào)用瀏覽器進(jìn)行網(wǎng)頁的展示和瀏覽,Android給WebView提供了一些子類,其子類下的方法能夠讓我們的WebView功能更加完善、性能更加的強(qiáng)大,接下來我們就一起來學(xué)習(xí)WebView常用的三大子類。WebView三大子類:
  • WebSettings:主要是對(duì)WebView進(jìn)行管理配置
  • WebViewClient:處理請(qǐng)求、通知事件
  • WebViewChromeClient:幫助WebView處理網(wǎng)站的JS的相關(guān)信息
  • 我們?cè)谏掀恼聦?shí)現(xiàn)WebView時(shí),使用了一個(gè)setJavaScriptEnabled( )方法來支持JavaScript腳本,這個(gè)方法就是屬于WebSettings類,下面我們通過在WebView中添加這些子類中的常用方法,來了解并掌握其用法和應(yīng)用場(chǎng)景。

    1、WebSettings類

    • webView.getSettings( ):創(chuàng)建WebSettings對(duì)象

    • setJavaScriptEnabled(true):WebView支持JavaScript

    • setPluginEnabled(true):WebView支持插件

    • setSupportZoom(true):WebView支持縮放

    • setAllowFileAccess(true):WebView能夠訪問文件

    • setLoadsImageAutomatically(true):支持自動(dòng)加載圖片

    2、WebViewClient類

    • shouldOverrideUrlLoading( ):WebView打開網(wǎng)頁,不調(diào)用瀏覽器

    • onPageStarted( ):開始載入頁面時(shí)調(diào)用該方法,可以設(shè)置Loading等待頁面

    • onPageFinished( ):結(jié)束頁面加載時(shí)調(diào)用,可以設(shè)置關(guān)閉Loading條,等動(dòng)作

    3、WebChromeClient類

    • onProgressChanged( ):獲取網(wǎng)頁的加載進(jìn)度

    • onReceivedTitle( ):獲取網(wǎng)頁的標(biāo)題

    以上就是一些比較基本常用的方法,當(dāng)然,WebView子類中的方法很多,大家可以根據(jù)應(yīng)用需求去相應(yīng)的類中查看使用方法(Ctrl+點(diǎn)擊類名)。

    下面來實(shí)現(xiàn)一個(gè)實(shí)例:獲取并顯示網(wǎng)頁的標(biāo)題、開始、結(jié)束加載提示和顯示加載進(jìn)度。

    新建一個(gè)ACtivity,首先我們來寫布局文件,在Activity的布局文件中我們添加4個(gè)TextView控件,分別用于顯示通過WebView下相應(yīng)的方法獲取到的網(wǎng)頁標(biāo)題、開始加載提示、結(jié)束加載提示,加載進(jìn)度。再添加一個(gè)WebView控件,布局代碼如下:

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <TextView android:id="@+id/tv_title" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#D52B2B" android:layout_marginTop="10dp" /> <TextView android:id="@+id/tv_start" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#D52B2B" android:layout_marginTop="10dp" /> <TextView android:id="@+id/tv_progress" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#D52B2B" android:layout_marginTop="10dp" /> <TextView android:id="@+id/tv_end" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#D52B2B" android:layout_marginTop="10dp" android:layout_marginBottom="10dp"/> <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" />LinearLayout>

    布局好之后我們?cè)倩氐紸ctivity的java文件中,來聲明找到控件,并通過WebView子類中的方法獲實(shí)現(xiàn)我們需要顯示的網(wǎng)頁信息,代碼如下:

    public class WebView_Activity extends AppCompatActivity { private WebView mWebView; private TextView mTvStart,mTvProgress,mTvEnd,mTvTitle; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web_view_); mWebView = findViewById(R.id.webView); mTvStart = findViewById(R.id.tv_start); mTvProgress = findViewById(R.id.tv_progress); mTvEnd = findViewById(R.id.tv_end); mTvTitle = findViewById(R.id.tv_title); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("https://m.sogou.com/"); mWebView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); mTvStart.setText("開始加載"); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); mTvEnd.setText("加載結(jié)束"); } }); mWebView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if (newProgress < 100){ String progress = newProgress + "%"; mTvProgress.setText(progress); }else{ mTvProgress.setText("100%"); } } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); mTvTitle.setText(title); } }); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 如果按下的按鍵是返回鍵并且webView可以返回,就執(zhí)行webView返回 if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }}

    上面代碼中聲明控件的代碼不做解釋,都是最基礎(chǔ)的代碼,我們先是通過連寫的方式使用方法mWebView.getSettings().setJavaScriptEnabled(true)使WebView支持JavaScript,接著在setWebViewClient方法中通過匿名內(nèi)部類的方法來重寫WebViewClient子類中的方法:

    • onPageStarted:重寫該方法,在調(diào)用該方法時(shí),文本框中顯示"開始加載"的提示信息

    • onPageFinished:重寫該方法,在網(wǎng)頁加載結(jié)束時(shí),文本框中提示"加載結(jié)束"提示

    接著通過setWebChromeClient方法,也是使用內(nèi)部類的方式來添加WebChromeClient子類,并重寫其中的顯示加載進(jìn)度的方法:

    • onProgressChanged:該方法就是用于獲取網(wǎng)頁加載進(jìn)度,在該方法中,我們通過if、else語句判斷,當(dāng)前加載進(jìn)度小于100時(shí),會(huì)通過setText方法在TextView中顯示當(dāng)前的加載進(jìn)度,其中newProgress就是當(dāng)前的加載進(jìn)度,否則顯示100%

    • onReceivedTitle:這個(gè)方法是用于獲取當(dāng)前網(wǎng)頁的標(biāo)題,再拖setText方法將獲取到的標(biāo)題在TextView中顯示出來。

    最后通過重寫onKeyDown方法,實(shí)現(xiàn)點(diǎn)擊"Back"鍵返回前一個(gè)頁面,在上篇文章中我們有詳細(xì)的講解。到這里為止,我們實(shí)例的需求都實(shí)現(xiàn)了,分別為顯示網(wǎng)頁標(biāo)題,提示開始加載、結(jié)束加載信息,顯示實(shí)時(shí)的加載進(jìn)度。我們來運(yùn)行程序,查看一下運(yùn)行結(jié)果。如下圖:

    觀察運(yùn)行結(jié)果,我們能看到,當(dāng)程序啟動(dòng)時(shí),會(huì)在頁面的頂部顯示當(dāng)前網(wǎng)頁的標(biāo)題,當(dāng)網(wǎng)頁開始加載時(shí),會(huì)顯示"開始加載"提示,在網(wǎng)頁加載中,會(huì)顯示實(shí)時(shí)的百分比加載進(jìn)度,最后網(wǎng)頁加載結(jié)束,會(huì)顯示"加載結(jié)束"文字。而且我們能發(fā)現(xiàn),當(dāng)打開一個(gè)新頁面時(shí),上面這些信息會(huì)顯示新加載頁面的信息。

    通過上面簡(jiǎn)單的實(shí)例我們能發(fā)現(xiàn),使用WebView子類中的方法能讓我們直觀的了解更多的網(wǎng)頁信息,我們還可以使用其子類中的其他方法提高WebView的性能和安全性,防止內(nèi)存泄漏等。后續(xù)的文章我們會(huì)通過一些實(shí)例來實(shí)現(xiàn)。

    獲取更多的Android學(xué)習(xí)知識(shí)和信息,請(qǐng)關(guān)注我們的微信公眾號(hào):秉空課堂

    總結(jié)

    以上是生活随笔為你收集整理的webview代码实例化_WebView常用类和基本方法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。