Android进阶2之WebView(浏览器)

来源:互联网 发布:表情包制作软件 编辑:程序博客网 时间:2024/05/22 06:42
一 概述
WebView是一个显示网页的视图。它依据于你自己的网页浏览器或者只是显示在你的Activity中的内容。
它使用了WebKit渲染引擎显示网页。它包括一些方法:通过浏览记录向前和向后浏览,放大,缩小,进行文本搜索等等。
实现内置的放大缩小使用 WebSettings.setBuiltInZoomControls(boolean)。
注意:为了使您的Activity能够上网,在WebView加载网页,你必须添加 INTERNET permissions 到你的 Android Manifest文件中去。
<uses-permission android:name="android.permission.INTERNET" />
二 操作步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
   你也可以在布局文件中声明WebView,在Activity中实例化WebView。
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
   互联网用:webView.loadUrl("http://www.baidu.com");
   本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
三 注意事项
在开发过程中应该注意几点: 
    1.AndroidManifest.xml中必须添加权限"android.permission.INTERNET"。
<uses-permission android:name="android.permission.INTERNET" />

    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
       
webview.getSettings().setJavaScriptEnabled(true);

    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
  
webview.setWebViewClient(new WebViewClient(){                           public boolean shouldOverrideUrlLoading(WebView view, String url) {                               view.loadUrl(url);                               return true;                           }               });  

      4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

public boolean onKeyDown(int keyCode, KeyEvent event) {         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {             webview.goBack(); //goBack()表示返回WebView的上一页面             return true;         }         return false;     } 



具体实现:


package xiaosi.webview;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebView;import android.webkit.WebViewClient; public class MyWebViewActivity extends Activity {     private WebView webview;     @Override    public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         webview = (WebView) findViewById(R.id.webview);         //设置WebView属性,能够执行Javascript脚本         webview.getSettings().setJavaScriptEnabled(true);         //加载需要显示的网页         webview.loadUrl("http://www.baidu.com/");         //设置Web视图         webview.setWebViewClient(new HelloWebViewClient ());     }          @Override    //设置回退     public boolean onKeyDown(int keyCode, KeyEvent event) {         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {             webview.goBack(); //goBack()表示返回WebView的上一页面             return true;         }         return false;     }          //Web视图     private class HelloWebViewClient extends WebViewClient {         @Override        public boolean shouldOverrideUrlLoading(WebView view, String url) {             view.loadUrl(url);             return true;         }     } }

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" >    <WebView        android:id="@+id/webview"        android:layout_width="fill_parent"        android:layout_height="fill_parent" /></LinearLayout>


原创粉丝点击