论坛风格切换
  • 2829阅读
  • 0回复

WebView 浏览器 [复制链接]

上一主题 下一主题
离线太史慈
 

发帖
766
金币
626
威望
556
只看楼主 正序阅读 使用道具 楼主  发表于: 2013-08-22
一 概述WebView是一个显示网页的视图。它依据于你自己的网页浏览器或者只是显示在你的Activity中的内容。它使用了WebKit渲染引擎显示网页。它包括一些方法:通过浏览记录向前和向后浏览,放大,缩小,进行文本搜索等等。实现内置的放大缩小使用 WebSettings.setBuiltInZoomControls(boolean)。注意:为了使您的Activity能够上网,在WebView加载网页,你必须添加 INTERNET permissions 到你的 Android Manifest文件中去。

二 操作步骤:
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"。
  1. <uses-permission android:name="android.permission.INTERNET" />

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

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

4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
  1. public boolean onKeyDown(int keyCode, KeyEvent event) {
  2.         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
  3.             webview.goBack(); //goBack()表示返回WebView的上一页面
  4.             return true;
  5.         }
  6.         return false;
  7.     }

具体实现代码:
  1. package xiaosi.webview;
  2.   
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.KeyEvent;
  6. import android.webkit.WebView;
  7. import android.webkit.WebViewClient;
  8.   
  9. public class MyWebViewActivity extends Activity {
  10.     private WebView webview;
  11.     @Override
  12.     public void onCreate(Bundle savedInstanceState) {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.main);
  15.         webview = (WebView) findViewById(R.id.webview);
  16.         //设置WebView属性,能够执行Javascript脚本
  17.         webview.getSettings().setJavaScriptEnabled(true);
  18.         //加载需要显示的网页
  19.         webview.loadUrl("http://www.baidu.com/");
  20.         //设置Web视图
  21.         webview.setWebViewClient(new HelloWebViewClient ());
  22.     }
  23.       
  24.     @Override
  25.     //设置回退
  26.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  27.         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
  28.             webview.goBack(); //goBack()表示返回WebView的上一页面
  29.             return true;
  30.         }
  31.         return false;
  32.     }
  33.       
  34.     //Web视图
  35.     private class HelloWebViewClient extends WebViewClient {
  36.         @Override
  37.         public boolean shouldOverrideUrlLoading(WebView view, String url) {
  38.             view.loadUrl(url);
  39.             return true;
  40.         }
  41.     }
  42. }
main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical" >
  6.   
  7.     <WebView
  8.         android:id="@+id/webview"
  9.         android:layout_width="fill_parent"
  10.         android:layout_height="fill_parent" />
  11.   
  12. </LinearLayout>







[url=http://www.phpwind.com]phpwind[/url]
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
提到某人:
选择好友
上一个 下一个