1. 程式人生 > >【安卓筆記】WebView控制元件使用

【安卓筆記】WebView控制元件使用

wv.loadUrl("file:///android_asset/test1.html");
  (2)遠端資源:     直接將地址字串傳入即可。
wv.loadUrl("http://blog.csdn.net");
注意,訪問遠端資源必須加上許可權:
 <uses-permission android:name="android.permission.INTERNET"/>
其實除了loadurl方式,你也可以呼叫LoadData 或者 loadDataWithBaseURL方法。
2.webView的配置: (1)WebSettings WebSettings用來設定WebView的屬性和狀態。可以通過如下方式獲取該物件:
WebSettings webSettings = wv.getSettings();
得到該物件後便可設定一些屬性:
    (1)setAllowFileAccess(boolean allow);       //設定啟用或禁止訪問檔案資料

  (2)setBuiltInZoomControls(boolean enabled);   //設定是否支援縮放

  (3)setDefaultFontSize(int size);            //設定預設的字型大小

  (4)setJavaScriptEnabled(boolean flag);       //設定是否支援JavaScript

  (5)setSupportZoom(boolean support);       //設定是否支援變焦
(2)WebViewClient WebViewClient主要用來輔助WebView處理各種通知、請求等事件。 通過setWebViewClient方法設定,提供的方法也有很多,下面列舉一部分:
(1)doUpdateVisitedHistory(WebView view, String url, boolean isReload);  //更新歷史記錄
(2)onFormResubmission(WebView view, Message dontResend, Message resend);//重新請求網頁資料
(3)onLoadResource(WebView view, String url);  //載入指定網址提供的資源
(4)onPageFinished(WebView view, String url);      //網頁載入完畢
(5)onPageStarted(WebView view, String url, Bitmap favicon);  //網頁開始載入
(6)onReceivedError(WebView view, int errorCode, String description, String failingUrl);  //報告錯誤資訊
(3)WebChoromeClient WebChromeClient主要用來輔助WebView處理Javascript的對話方塊、網站圖示、網站標題以及網頁載入進度等。通過WebView的setWebChromeClient()方法設定。
(1)onProgressChanged(WebView view, int newProgress)//監聽網頁載入進度
(2)onReceivedTitle(WebView view, String title)//監聽網頁標題
(3)onReceivedIcon(WebView view, Bitmap icon)//監聽網頁圖示
小案例:
package com.example.webviewdemo1;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity
{
    protected static final String TAG = null;
    private WebView wv = null;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        wv = (WebView) findViewById(R.id.wv);
        WebSettings settings = wv.getSettings();
        settings.setBuiltInZoomControls(true);//設定是否顯示縮放工具
        settings.setSupportZoom(true);//設定是否支援縮放
        settings.setJavaScriptEnabled(true);
        settings.setDefaultFontSize(15);
        
        //載入本地assets目錄下的html
//        wv.loadUrl("file:///android_asset/test1.html");
        //載入遠端網頁
        wv.loadUrl("http://blog.csdn.net");
        wv.setWebViewClient(new WebViewClient()
        {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                //讓新開啟的網頁在當前webview顯示
                view.loadUrl(url);
                return true;
            }
        });
        wv.setWebChromeClient(new WebChromeClient()
        {
            //獲得網頁的載入進度(0-100)
            @Override
            public void onProgressChanged(WebView view, int newProgress)
            {
                if(newProgress <= 100)
                {
                    Log.i(TAG,"progress"+newProgress);
                }
            }
            //獲得網頁的標題
            @Override
            public void onReceivedTitle(WebView view, String title)
            {
                Log.i(TAG,"titile="+title);
            }
            @Override
            public void onReceivedIcon(WebView view, Bitmap icon)
            {
                // TODO Auto-generated method stub
                super.onReceivedIcon(view, icon);
            }
        });
        
    }
}
演示效果:



logcat列印的日誌: