webview代码实例化_WebView常用类和基本方法详解
我們?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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php huoqv 多选,镊噍虫刻蘖舌#
- 下一篇: LaTex数学符号表(数学中最常用的所有