WebView控件是对WebKit进行封装的java接口,而WebKit是一个开源浏览器的网页排版引擎,更多关于WebKit的信息看点击打开链接。
新建工程WebViewDemo,不赘述。核心文件有三个,贴出如下:
1)、Activity文件WebViewDemoActivity.java:
package com.android.webviewdemo; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.webkit.URLUtil; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Button; import android.widget.EditText; public class WebViewDemoActivity extends Activity { private EditText mUrl; private Button mConnect; private WebView mWebView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView)findViewById(R.id.webview); mUrl = (EditText)findViewById(R.id.url); mConnect = (Button)findViewById(R.id.connect); /** * 设置WebView的属性 */ WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); //支持Javascript脚本语言 webSettings.setAllowFileAccess(true); //允许WebView访问文件数据 webSettings.setBuiltInZoomControls(true); //支持内容缩放控制 mConnect.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub openNetPage(); } }); mUrl.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == KeyEvent.KEYCODE_ENTER){ openNetPage(); return true; } return false; } }); } private void openNetPage(){ String url = mUrl.getText().toString(); if(URLUtil.isNetworkUrl(url)){ mWebView.loadUrl(url); }else{ mUrl.setText("address error, input again!"); } } /** * 若多次打开网页,支持网页返回到上一级 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if((keyCode == KeyEvent.KEYCODE_BACK) && (mWebView.canGoBack())){ mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } }
2)、布局文件main.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" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:animationCache="true" android:layout_weight="9"> <EditText android:id="@+id/url" android:layout_width="wrap_content" android:layout_weight="9" android:layout_height="wrap_content" android:lines="1" android:inputType="textUri" android:imeOptions="actionGo" /> <Button android:id="@+id/connect" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="wrap_content" android:text="connect" /> </LinearLayout> <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" /> </LinearLayout>
3)、Manifest文件AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.webviewdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".WebViewDemoActivity" > <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)、需在AndroidManifest.xml文件中添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET"/>否则会提示网络无法访问。
2)、需要时能Javascrip脚本语言,否则很多网页上用Javascript编写的对话框无法打开。
3)、关于为WebView添加辅助处理各种通知和请求的类WebViewClient,添加辅助处理Javascrip对话框、图标、加载进度条等的类WebChromeClient的内容,有兴趣的XDJM自己去琢磨琢磨了。