欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中WebView用法实例分析

程序员文章站 2023-12-10 20:40:52
本文实例讲述了android中webview用法。分享给大家供大家参考,具体如下: webview相当于一个迷你浏览器,采用webkit内核,因此完美支持html,jav...

本文实例讲述了android中webview用法。分享给大家供大家参考,具体如下:

webview相当于一个迷你浏览器,采用webkit内核,因此完美支持html,javascript,css等。
在开发过程中应该注意几点:

1.androidmanifest.xml中必须使用许可"android.permission.internet",否则会出web page not available错误。
2.如果访问的页面中有javascript,则webview必须设置支持javascript。

复制代码 代码如下:
webview.getsettings().setjavascriptenabled(true);

3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开android的系统browser中响应该链接,必须覆盖 webview的webviewclient对象。
mwebview.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) && mwebview.cangoback()) {
  mwebview.goback();
   return true;
 }
 return super.onkeydown(keycode, event);
}

实例:

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/bg_main" >
 <relativelayout
 android:id="@+id/title"
 android:layout_width="fill_parent"
 android:layout_height="48dp"
 android:layout_alignparenttop="true"
 android:background="@drawable/bg_title"
 android:padding="0dp" >
 <textview
  android:id="@+id/news"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerinparent="true"
  android:text="新浪微博"
  android:textsize="22sp"
  android:textcolor="#ffffff"/>
 </relativelayout>
 <webview
 android:id="@+id/web_view_pethome"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_below="@+id/title"/>
 <progressbar
 android:id="@+id/progress_bar"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerinparent="true"
 android:visibility="gone" />
</relativelayout>

java文件代码:

private void findviews() {
 mwebview = (webview) findviewbyid(r.id.web_view_pethome);
 mprogressbar = (progressbar) findviewbyid(r.id.progress_bar);
}
private void setwebview() {
 // 调用loadurl()方法进行加载内容
 mwebview.loadurl(url);
 // 设置webview的属性,此时可以去执行javascript脚本
 mwebview.getsettings().setjavascriptenabled(true);
 // 设置缩放按钮
 mwebview.getsettings().setbuiltinzoomcontrols(true);
 mwebview.getsettings().setsupportzoom(true);
 mwebview.setwebviewclient(new webviewclient() {
 public boolean shouldoverrideurlloading(webview view, string url) {
  view.loadurl(url);
  return true;
 }
 @override
 public void onpagefinished(webview view, string url) {
  log.v("webview", "========onpagefinished=======");
  super.onpagefinished(view, url);
  mprogressbar.setvisibility(view.gone);
 }
 @override
 public void onpagestarted(webview view, string url, bitmap favicon) {
  log.v("webview", "========onpagestarted=======");
  super.onpagestarted(view, url, favicon);
  mprogressbar.setvisibility(view.visible);
 }
 });
}
/**
 * 返回键监听事件
 */
@override
public boolean onkeydown(int keycode, keyevent event) {
 if ((keycode == keyevent.keycode_back)) {
 if (mwebview.cangoback()) {
  mwebview.goback();
 }
 return true;
 }
 return super.onkeydown(keycode, event);
}

运行效果:

Android中WebView用法实例分析

webview刷新当前页面:

复制代码 代码如下:
mwebview.reload();

希望本文所述对大家android程序设计有所帮助。