文章目錄
1、WebView是什麼?
WebView是android中一個很是重要的控件,它的做用是用來展現一個web頁面。javascript
2、WebView的做用
(1)顯示和渲染網頁;
(2)可與頁面JavaScript交互,實現混合開發。
html
3、使用步驟
1.使用WebView以前,需在AndroidManifest.xml文件中聲明訪問網絡權限
<uses-permission android:name="android.permission.INTERNET" />
2.加載頁面的方式
加載頁面通常有如下兩種形式:java
//方式一:加載一個網頁 webView.loadUrl("http://www.baidu.com"); //方式二:加載應用資源文件內的網頁 webView.loadUrl("file:///android_asset/test.html");
4、示範程序
(1)使用WebView加載本地文件
A:新建一個本地test.html文件android
建立步驟:web
a:建立assets文件夾
b:在生成的assets文件夾下建立test.xml文件
瀏覽器
<html> <title>本地HTML</title> <script> function changetxt(val){ document.getElementById("txt").innerHTML=val; } </script> <body>Hello World</body><p id="txt"></p> </html>
B:在項目的佈局文件中填入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:padding="15dp"> <WebView android:id="@+id/wb" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
效果圖:
C:在Java代碼中填寫
app
package com.example.upclass; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; public class MainActivity_10_19 extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_10_19); webView = findViewById(R.id.wb); //要支持JS,不然一些網頁不能正常加載 webView.getSettings().setJavaScriptEnabled(true); //加載本地HTML 文件路徑是固定的 webView.loadUrl("file:///android_asset/test.html"); } }
運行效果圖:
ide
(2)使用WebView加載網頁文件
A:將加載本地文件的語句改成如下便可佈局
webView.loadUrl("http://www.baidu.com");
注意:
若是直接用上面的語句來加載網頁,頗有可能會彈出系統瀏覽器進行網頁訪問,這樣使用體驗就會不好!解決辦法是在loadUrl()以前加上這樣一句代碼:
//這樣寫就繼續在WebView中繼續打開連接 webView.setWebViewClient(new WebViewClient());
完整代碼:
public class MainActivity_10_19 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_10_19); WebView webView = (WebView)findViewById(R.id.wb); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("http://www.baidu.com"); } }
(3)WebView的兩個經常使用方法
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
做用:是當從一個網頁跳轉到另一個網頁時,咱們但願目標網頁仍然在當前的webview中顯示,而不是在瀏覽器中打開 //若是沒有webView.setWebViewClient(new WebViewClient());這句,該網頁會在手機自帶的瀏覽器中打開。
webView.setWebChromeClient(new WebChromeClient());
做用:用來設置更加豐富的處理效果,好比JS、進度條等
實例:
webView.setWebViewClient(new WebViewClient() { //當頁面開始加載 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.d("WebView", "onPageStarted..."); } //當頁面完成加載 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Log.d("WebView", "onPageFinished..."); /* 這兩條語句能夠設置一個當頁面加載完成時,彈出一個框 小廣告就是這樣來的 webView.loadUrl("javascript:alert('hello')"); webView.evaluateJavascript("javascript:alert('hello')", null); */ } });
小廣告圖示:
webView.setWebChromeClient(new WebChromeClient() { //監聽到進度 能夠用於設置一個進度條 @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); Log.d("MainActivity", String.valueOf(newProgress)); } //能夠獲取網頁的標題 @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); setTitle(title); } });
5、總結
碼農不易,看完啦,點個贊再走吧!