我們都知道Android的網路功能很不錯,當然Android中WebView組件也挺不錯,可以直接進行載入網頁,我們可以把這個看做一個小型的瀏覽器\
【注】以下的一些內容我翻譯了一下文檔,可能有些翻譯不太準確,就算自己當做一次學習英文的機會了,請大家稍微見諒一下哈
首先我們看下文檔中對於WebView的解釋:
WebView是進行web網頁顯示的,我們使用這個類為基礎進行開發推出自己的Web瀏覽器,或者我們可以直接在當前的Activity中顯示線上的內容。
WebView使用WebKit進行渲染來顯示網頁,通過於此,我們可以進行實現網頁後退,前進,放大,縮小或者搜尋或者更多功能;
【注意】使用WebView,,因為用處到了網路,所以我們必須在AndroidManifset.xml檔案中進行使用權限設定
<uses-permission android:name="android.permission.INTERNET" />
接下來去實現WebView,需要下面一些步驟
一:要在布局檔案那邊聲明WebView組件
二:在Activity中進行執行個體化
三:調用WebView的loadUrl()方法來實現。載入指定的URL地址的網頁
Demo原始碼:
package com.android_jiangqq.iweibo.ui;
/**
* @author jiangqq
*
*/
import com.android_jiangqq.iweibo.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
public class WebView_Test extends Activity {
private WebView webView;
private static final String URL = "http://www.google.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 取消標題
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// 進行全屏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.webview);
// 執行個體化WebView
webView = (WebView) this.findViewById(R.id.wv_oauth);
/**
* 調用loadUrl()方法進行載入內容
*/
webView.loadUrl(URL);
/**
* 設定WebView的屬性,此時可以去執行JavaScript指令碼
*/
webView.getSettings().setJavaScriptEnabled(true);
}
}
XML檔案的定義:
<?xml version="1.0" encoding="utf-8"?>
;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/wv_oauth"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
;/LinearLayout>
效果:
①:有時候我們我們需要WebView能夠實現超連結的功能。我們可以調用setWebViewClient()方法試著WebView的用戶端,
此時我們只要重寫一下WebViewClient類下的public boolean shouldOverrideKeyEvent (WebView view, KeyEvent event)就可以了
原始碼如下:
private class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
webView.loadUrl(URL);
return true;
}
}
②:考慮到網頁的載入速度,我們可以調用setWebChromeClient()方法
我們此時只要重寫一下WebChromeClient類中的
public void onProgressChanged (WebView view, int newProgress)來顯示頁面的載入進度,執行個體代碼如下:
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
handler.sendEmptyMessage(CLOSE_DIA);
}
super.onProgressChanged(view, newProgress);
}
});
代碼中我用到了handlr, 此時如果載入進度=100的時候,發個訊息給handler 然後進行處理
摘自 jiangqq781931404