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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

    1、WebSettings類

    • webView.getSettings( ):創建WebSettings對象

    • setJavaScriptEnabled(true):WebView支持JavaScript

    • setPluginEnabled(true):WebView支持插件

    • setSupportZoom(true):WebView支持縮放

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

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

    2、WebViewClient類

    • shouldOverrideUrlLoading( ):WebView打開網頁,不調用瀏覽器

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

    • onPageFinished( ):結束頁面加載時調用,可以設置關閉Loading條,等動作

    3、WebChromeClient類

    • onProgressChanged( ):獲取網頁的加載進度

    • onReceivedTitle( ):獲取網頁的標題

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

    下面來實現一個實例:獲取并顯示網頁的標題、開始、結束加載提示和顯示加載進度。

    新建一個ACtivity,首先我們來寫布局文件,在Activity的布局文件中我們添加4個TextView控件,分別用于顯示通過WebView下相應的方法獲取到的網頁標題、開始加載提示、結束加載提示,加載進度。再添加一個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>

    布局好之后我們再回到Activity的java文件中,來聲明找到控件,并通過WebView子類中的方法獲實現我們需要顯示的網頁信息,代碼如下:

    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("加載結束"); } }); 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可以返回,就執行webView返回 if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }}

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

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

    • onPageFinished:重寫該方法,在網頁加載結束時,文本框中提示"加載結束"提示

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

    • onProgressChanged:該方法就是用于獲取網頁加載進度,在該方法中,我們通過if、else語句判斷,當前加載進度小于100時,會通過setText方法在TextView中顯示當前的加載進度,其中newProgress就是當前的加載進度,否則顯示100%

    • onReceivedTitle:這個方法是用于獲取當前網頁的標題,再拖setText方法將獲取到的標題在TextView中顯示出來。

    最后通過重寫onKeyDown方法,實現點擊"Back"鍵返回前一個頁面,在上篇文章中我們有詳細的講解。到這里為止,我們實例的需求都實現了,分別為顯示網頁標題,提示開始加載、結束加載信息,顯示實時的加載進度。我們來運行程序,查看一下運行結果。如下圖:

    觀察運行結果,我們能看到,當程序啟動時,會在頁面的頂部顯示當前網頁的標題,當網頁開始加載時,會顯示"開始加載"提示,在網頁加載中,會顯示實時的百分比加載進度,最后網頁加載結束,會顯示"加載結束"文字。而且我們能發現,當打開一個新頁面時,上面這些信息會顯示新加載頁面的信息。

    通過上面簡單的實例我們能發現,使用WebView子類中的方法能讓我們直觀的了解更多的網頁信息,我們還可以使用其子類中的其他方法提高WebView的性能和安全性,防止內存泄漏等。后續的文章我們會通過一些實例來實現。

    獲取更多的Android學習知識和信息,請關注我們的微信公眾號:秉空課堂

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。