Android WebView 详细介绍

Android WebView 详细介绍

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。

相关:

1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。


2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);

3、设置WebView基本信息:
  如果访问的页面中有Javascript,则webview必须设置支持Javascript。
  webview.getSettings().setJavaScriptEnabled(true); 
    触摸焦点起作用
  requestFocus();
    取消滚动条
  this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

 4、设置WevView要显示的网页:
  互联网用:webView.loadUrl("http://www.google.com");
    本地文件用:webView.loadUrl("file:///android_asset/XX.html");  本地文件存放在:assets文件中

5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。
  给WebView添加一个事件监听对象(WebViewClient) ,并重写其中的一些方法
shouldOverrideUrlLoading:对网页中超链接按钮的响应。
  当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource  
onPageStart 
onPageFinish 
onReceiveError
onReceivedHttpAuthRequest
 
 6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
  覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

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

     return false;

-------------------------------------------------------------------------------------

Android的webview加载本地html、本apk内html和远程URL

//打开本包内asset目录下的index.html文件
wView.loadUrl(" file:///android_asset/index.html ");  

//打开本地sd卡内的index.html文件
wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");

//打开指定URL的html文件
wView.loadUrl(" http://m.oschina.net");

 

-------------------------------------------------------------------------------------

来个例子:

实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
   互联网用:webView.loadUrl("http://www.google.com");
   本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
   <uses-permission android:name="android.permission.INTERNET" />
下面是具体例子:
MainActivity.java

01package com.android.webview.activity;
02
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.KeyEvent;
06import android.webkit.WebView;
07
08public class MainActivity extends Activity {
09    private WebView webview;
10    @Override
11    public void onCreate(Bundle savedInstanceState) {
12        super.onCreate(savedInstanceState);
13        //实例化WebView对象
14        webview = new WebView(this);
15        //设置WebView属性,能够执行Javascript脚本
16        webview.getSettings().setJavaScriptEnabled(true);
17        //加载需要显示的网页
18        webview.loadUrl("http://www.51cto.com/");
19        //设置Web视图
20        setContentView(webview);
21    }
22    
23    @Override
24    //设置回退
25    //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
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}

在AndroidManifest.xml文件中的17行添加权限

01<?xml version="1.0" encoding="utf-8"?>
02<manifest xmlns:android="http://schemas.android.com/apk/res/android"
03      package="com.android.webview.activity"
04      android:versionCode="1"
05      android:versionName="1.0">
06    <uses-sdk android:minSdkVersion="10" />
07
08    <application android:icon="@drawable/icon" android:label="@string/app_name">
09        <activity android:name=".MainActivity"
10                  android:label="@string/app_name">
11            <intent-filter>
12                <action android:name="android.intent.action.MAIN" />
13                <category android:name="android.intent.category.LAUNCHER" />
14            </intent-filter>
15        </activity>
16    </application>
17    <uses-permission android:name="android.permission.INTERNET"/>
18</manifest>

效果图:

第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置  WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>
  下面是具体的例子:
MainActivity.java

01package com.android.webview.activity;
02
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.KeyEvent;
06import android.webkit.WebView;
07import android.webkit.WebViewClient;
08
09public class MainActivity 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.51cto.com/");
20        //设置Web视图
21        webview.setWebViewClient(new HelloWebViewClient ());
22    }
23    
24    @Override
25    //设置回退
26    //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
27    public boolean onKeyDown(int keyCode, KeyEvent event) {
28        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
29            webview.goBack(); //goBack()表示返回WebView的上一页面
30            return true;
31        }
32        return false;
33    }
34    
35    //Web视图
36    private class HelloWebViewClient extends WebViewClient {
37        @Override
38        public boolean shouldOverrideUrlLoading(WebView view, String url) {
39            view.loadUrl(url);
40            return true;
41        }
42    }
43}

main.xml

01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03    android:orientation="vertical"
04    android:layout_width="fill_parent"
05    android:layout_height="fill_parent"
06    >  
07    <WebView
08        android:id="@+id/webview"
09        android:layout_width="fill_parent"
10        android:layout_height="fill_parent"
11        />
12</LinearLayout>

在AndroidManifest.xml文件中的17行添加权限

01<?xml version="1.0" encoding="utf-8"?>
02<manifest xmlns:android="http://schemas.android.com/apk/res/android"
03      package="com.android.webview.activity"
04      android:versionCode="1"
05      android:versionName="1.0">
06    <uses-sdk android:minSdkVersion="10" />
07
08    <application android:icon="@drawable/icon" android:label="@string/app_name">
09        <activity android:name=".MainActivity"
10                  android:label="@string/app_name">
11            <intent-filter>
12                <action android:name="android.intent.action.MAIN" />
13                <category android:name="android.intent.category.LAUNCHER" />
14            </intent-filter>
15        </activity>
16    </application>
17    <uses-permission android:name="android.permission.INTERNET"/>
18</manifest>

效果图:

 

更多可以参考:http://www.oschina.net/android/43/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值