Android开发学习笔记 浅谈WebView

时间:2021-12-08 07:58:27

第一种方法的步骤:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.android.webview.activity;
 
import android.app.activity;
import android.os.bundle;
import android.view.keyevent;
import android.webkit.webview;
 
public class mainactivity extends activity {
 private webview webview;
 @override
 public void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  //实例化webview对象
  webview = new webview(this);
  //设置webview属性,能够执行javascript脚本
  webview.getsettings().setjavascriptenabled(true);
  //加载需要显示的网页
  webview.loadurl("//www.zzvips.com/");
  //设置web视图
  setcontentview(webview);
 }
  
 @override
 //设置回退
 //覆盖activity类的onkeydown(int keycoder,keyevent event)方法
 public boolean onkeydown(int keycode, keyevent event) {
  if ((keycode == keyevent.keycode_back) && webview.cangoback()) {
   webview.goback(); //goback()表示返回webview的上一页面
   return true;
  }
  return false;
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.android.webview.activity"
  android:versioncode="1"
  android:versionname="1.0">
 <uses-sdk android:minsdkversion="10" />
 
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".mainactivity"
     android:label="@string/app_name">
   <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>

效果图:

Android开发学习笔记 浅谈WebView

第二种方法的步骤:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.android.webview.activity;
 
import android.app.activity;
import android.os.bundle;
import android.view.keyevent;
import android.webkit.webview;
import android.webkit.webviewclient;
 
public class mainactivity 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("//www.zzvips.com/");
  //设置web视图
  webview.setwebviewclient(new hellowebviewclient ());
 }
  
 @override
 //设置回退
 //覆盖activity类的onkeydown(int keycoder,keyevent event)方法
 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

?
1
2
3
4
5
6
7
8
9
10
11
12
<?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"
 >
 <webview
  android:id="@+id/webview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  />
</linearlayout>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.android.webview.activity"
  android:versioncode="1"
  android:versionname="1.0">
 <uses-sdk android:minsdkversion="10" />
 
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".mainactivity"
     android:label="@string/app_name">
   <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>

效果图:

Android开发学习笔记 浅谈WebView

本文出自 “it的点点滴滴” 博客