1. 程式人生 > 其它 >【Android筆記】淺談WebView

【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>

效果圖: