Hello,Views(四)用Web View實現瀏覽網頁(附源碼)


源碼鏈接已經修正

前言

本文翻譯自官方教程。(源碼下載

android提供的web view可以讓我們不用默認瀏覽器打開網頁,本文將利用web view,在應用中實現網頁的訪問。

1.新建工程HelloWebView

2.打開res/layout/main.xml,添加一個webview,如下修改

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id
="@+id/webview"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
/>

3.打開HelloWebViewActivity.java 文件,聲明一個成員,並且重寫onCreate()方法:

WebView mWebView;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.cnblogs.com");
mWebView.setWebViewClient(new HelloWebViewClient());
}

4.在清單文件中,設置網絡訪問權限

<uses-permission android:name="android.permission.INTERNET" />
 
        

5.找到我們的Activity,設置無標題模式android:theme="@android:style/Theme.NoTitleBar"。

<activity 
android:name=".HelloWebViewActivity"
android:label
="@string/app_name"
android:theme
="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

 

 

6.在Android中打開網頁時會自動調用系統的瀏覽器,而這是我們不希望出現的。那么我們就要自定義一個瀏覽網頁的內類,這個類東西比較少,我們定義為內部類,它擴展WebViewClient接口:

private class HelloWebViewClient extends WebViewClient 
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
}



7.現在回到HelloWebViewActivity的oncreate()方法里面,在末尾添加:

mWebView.setWebViewClient(new HelloWebViewClient());


8.到這已經實現在應用的內部瀏覽網頁,但是我們還缺少返回的功能,如果我們近入一個子網頁后,又想返回上一頁怎么辦,這時需要重寫按鈕返回事件。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
{
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}



9.全部OK,可以運行了。總體而言要實現本文的功能是比較簡單的,但是 ,我們這樣做的效率不是很高,如果對訪問的緩存功能進行優化,就可以做成一個自己的手機瀏覽器了。(源碼下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM