webview代码实例化_WebView常用类和基本方法详解
我們在上篇文章實現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常用类和基本方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php huoqv 多选,镊噍虫刻蘖舌#
- 下一篇: python萌新笔记----基于requ