Android WebView组件用法详解

内容摘要
本文实例讲述了Android WebView组件用法。分享给大家供大家参考,具体如下:

如果想WebView能够访问网络,必须在AndroidManifest.xml里面添加权限


<uses-permission android:n
文章正文

本文实例讲述了Android WebView组件用法。分享给大家供大家参考,具体如下:
如果想WebView能够访问网络,必须在AndroidManifest.xml里面添加权限

<uses-permission android:name="android.permission.INTERNET" />

main.xml很简单,就是一个WebView

<?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>

WebViewDemoActivity.java代码:

package com.tianjf;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class WebViewDemoActivity extends Activity {
  private WebView mWebView;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mWebView = (WebView) findViewById(R.id.webView);
    // 得到WebSettings对象,设置支持JavaScript参数
    // 如果访问的页面中有JavaScript,则WebView必须设置支持JavaScript ,否则显示空白页面
    mWebView.getSettings().setJavaScriptEnabled(true);
    // 加载URL
    mWebView.loadUrl("http://www.baidu.com/");
  }
}

运行一下就会看到URL被正确load出来了。

但是有个问题,当点击链接继续浏览,则会弹出系统默认的Browser,为了能够继续在WebView中浏览,要用到shouldOverrideUrlLoading方法:

@Override
public void onCreate(Bundle savedInstanceState) {
  。。。。。。。。。。。。。。。。。。。。。。。。
  // 虽然Google主页在WebView中显示了,但是如果点击链接继续浏览,则会显示到系统默认的Browser中
  // 为了继续在WebView中显示,需要重写shouldOverrideUrlLoading方法
  mWebView.setWebViewClient(new MyWebViewClient());
  。。。。。。。。。。。。。。。。。。。。。。。。
    }
private class MyWebViewClient extends WebViewClient {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
  }
}

另外,如果想按回退键回到上一个页面,那么

/**
 * 按back键可以回到上个网页
 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
    mWebView.goBack();
    return true;
  }
  return super.onKeyDown(keyCode, event);
}

对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed 方法即可,代码如下

@Override
public void onBackPressed() {
 // 这里处理逻辑代码,该方法仅适用于2.0或更高版本的sdk
return ;
}

如果想加载工程中的HTML,那么可以用到下面的方法(前提是HTML放在assets目录中)

mWebView.loadUrl("file:///android_asset/test.html");

如果想直接load一段HTML文,可以用下面的方法

mWebView.loadData("<html><body>abcdefg</body></html>", "text/html", "utf-8");

下面是WebView其他的一下用法:

设置允许访问文件数据

mWebView.getSettings().setAllowFileAccess(true);

设置支持缩放

mWebView.getSettings().setBuiltInZoomControls(true);

设置是否保存密码

mWebView.getSettings().setSavePassword(false);

设置支持各种不同的设备

Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

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


代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!

© 2020 IDC笔记 . | 备案号:辽ICP备18000516号