android 中webView的使用

 

在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。

什么是webkit

WebKit 是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。

传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过,随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。

这里我们初步体验一下在android是使用webview浏览网页,在SDK的Dev Guide中有一个WebView的简单例子 。

 

下面是我做的一个用于可以浏览网页的例子:

main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout
    	android:orientation="horizontal"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content">
    	
    	<EditText
    		android:id="@+id/edittext"
    		android:layout_width="fill_parent"
    		android:layout_height="wrap_content"
    		android:layout_weight="1.0"
    		android:lines="1"/>
    	<Button
    		android:id="@+id/button"    		
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		
    		android:textColor="@color/blue"
    		android:text="   GO  "/>    		    		
    </LinearLayout>
    
    <WebView
    	android:id="@+id/webview"    	
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:scrollbarStyle="outsideOverlay"
    	android:fitsSystemWindows="true"
    	android:layout_weight="1.0"/>	
</LinearLayout>


java  code:

package com.android.WebViewDemo;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.LightingColorFilter;
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.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;

public class WebViewDemo extends Activity {

    private EditText editText;
    private Button button;
    private WebView webView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        editText = (EditText)findViewById(R.id.edittext);
        button = (Button)findViewById(R.id.button);
        button.getBackground().setColorFilter(new LightingColorFilter(Color.RED,Color.GRAY));
        webView = (WebView)findViewById(R.id.webview);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                openBrowser();
            }
        });
        editText.setOnKeyListener(new OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode == KeyEvent.KEYCODE_ENTER) {
                    openBrowser();
                    return true;
                }
                return false;
            }
        });
    }

    private void openBrowser() {
        // TODO Auto-generated method stub
        webView.loadUrl("http://" + editText.getText().toString());
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    
}
注意:要在AndroidManifest文件中加入对网络的访问权限:<uses-permission android:name="android.permission.INTERNET"/>

你可能感兴趣的:(android,layout,webkit,button,Safari,引擎)