【Android筆記】淺談WebView
WebView(網路檢視)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中例項化WebView元件:WebView webView = new WebView(this);
2.呼叫WebView的loadUrl()方法,設定WevView要顯示的網頁:
網際網路用:webView.loadUrl("http://www.google.com");
本地檔案用:webView.loadUrl("file:///android_asset/XX.html");本地檔案存放在:assets檔案中
3.呼叫Activity的setContentView( )方法來顯示網頁檢視
4.用WebView點連結看了很多頁以後為了讓WebView支援回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點選系統回退剪鍵,整個瀏覽器會呼叫finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml檔案中新增許可權,否則會出現Web page not available錯誤。
下面是具體例子:
MainActivity.java
packagecom.android.webview.activity; importandroid.app.Activity; importandroid.os.Bundle; importandroid.view.KeyEvent; importandroid.webkit.WebView; publicclassMainActivityextendsActivity{ privateWebViewwebview; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //例項化WebView物件 webview=newWebView(this); //設定WebView屬性,能夠執行Javascript指令碼 webview.getSettings().setJavaScriptEnabled(true); //載入需要顯示的網頁 webview.loadUrl("http://www.51cto.com/"); //設定Web檢視 setContentView(webview); } @Override //設定回退 //覆蓋Activity類的onKeyDown(intkeyCoder,KeyEventevent)方法 publicbooleanonKeyDown(intkeyCode,KeyEventevent){ if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){ webview.goBack();//goBack()表示返回WebView的上一頁面 returntrue; } returnfalse; }
在AndroidManifest.xml檔案中的17行新增許可權
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.webview.activity" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> </manifest>
效果圖:
第二種方法的步驟:
1、在佈局檔案中宣告WebView
2、在Activity中例項化WebView
3、呼叫WebView的loadUrl( )方法,設定WevView要顯示的網頁
4、為了讓WebView能夠響應超連結功能,呼叫setWebViewClient( )方法,設定 WebView檢視
5、用WebView點連結看了很多頁以後為了讓WebView支援回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點選系統回退剪鍵,整個瀏覽器會呼叫finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml檔案中新增許可權,否則出現Web page not available錯誤。
下面是具體的例子:
MainActivity.java
packagecom.android.webview.activity;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.KeyEvent;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
publicclassMainActivityextendsActivity{
privateWebViewwebview;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview=(WebView)findViewById(R.id.webview);
//設定WebView屬性,能夠執行Javascript指令碼
webview.getSettings().setJavaScriptEnabled(true);
//載入需要顯示的網頁
webview.loadUrl("http://www.51cto.com/");
//設定Web檢視
webview.setWebViewClient(newHelloWebViewClient());
}
@Override
//設定回退
//覆蓋Activity類的onKeyDown(intkeyCoder,KeyEventevent)方法
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){
webview.goBack();//goBack()表示返回WebView的上一頁面
returntrue;
}
returnfalse;
}
//Web檢視
privateclassHelloWebViewClientextendsWebViewClient{
@Override
publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
view.loadUrl(url);
returntrue;
}
}
}
main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
在AndroidManifest.xml檔案中的17行新增許可權
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.webview.activity"
android:versionCode="1"
android:versionName="1.0">
<uses-sdkandroid:minSdkVersion="10"/>
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<activityandroid:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<uses-permissionandroid:name="android.permission.INTERNET"/>
</manifest>
效果圖: