WebView 对象用于网页显示使用,简单的学习并使用了一下。

1、首先在 layout 中摆一个全屏的 webview 控件 (main.xml )

<?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/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

2、抽象出一个简单的 TestWebView 类,很简单,直接上代码:

package com.example.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; import android.util.Log; public class TestWebView {
private static final String TAG = "TestWebView";
private reponseEvent re = null; public TestWebView() { } public static interface reponseEvent {
public void onResult(String err,String result);
} public void setListener(reponseEvent re) {
this.re = re;
} public void requestUrl(final String _url) {
Thread th = new Thread(new Runnable() { @Override
public void run() {
String line = null;
BufferedReader buffer = null;
StringBuffer sb = new StringBuffer();
try {
URL url = new URL(_url);
HttpURLConnection urlConn = (HttpURLConnection) url
.openConnection();
buffer = new BufferedReader(new InputStreamReader(urlConn
.getInputStream(), "GB2312"));
while ((line = buffer.readLine()) != null) {
sb.append(line);
}
} catch (MalformedURLException e) {
Log.e(TAG, "MalformedURLException: " + e.getMessage());
} catch (IOException e) {
Log.e(TAG, "IOException: " + e.getMessage());
}
if (re != null)
re.onResult(null, sb.toString());
}
}); th.start();
}
}

3、用法

package com.example.test;

import java.io.UnsupportedEncodingException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button; import com.example.test.TestWebView.reponseEvent; public class MainActivity extends Activity {
static final String TAG = "MainActivity"; private WebView webView;
private WebHandler webHandler = new WebHandler();
private TestWebView testWebview = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initview(); // testView(); testView1();
} void initview() {
webView = (WebView) findViewById(R.id.webView1); } void testView() {
testWebview = new TestWebView();
testWebview.setListener(new reponseEvent() { @Override
public void onResult(String err, String result) {
Message msg = webHandler.obtainMessage();
msg.what = 1;
msg.obj = (String) result;
webHandler.sendMessage(msg);
}
}); testWebview.requestUrl("http://www.sina.com.cn/index.shtml");
} void testView1() {
webView.loadUrl("http://www.sina.com.cn/index.shtml");
} class WebHandler extends Handler {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
String s = (String) msg.obj;
try {
s = new String(s.getBytes("GB2312"), "GB2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
webView.getSettings().setDefaultTextEncodingName("UTF-8");
webView.loadData(s, "text/html; charset=UTF-8", null);
break;
default:
break;
}
};
}; }

使用了两种方式来调用加载url方式:

void android.webkit.WebView.loadData(String data, String mimeType, String encoding)

public void loadData (String data, String mimeType, String encoding)

Added in API level 1

Loads the given data into this WebView using a 'data' scheme URL.

Note that JavaScript's same origin policy means that script running in a page loaded using this method will be unable to access content loaded using any scheme other than 'data', including 'http(s)'. To avoid this restriction, use loadDataWithBaseURL() with an appropriate base URL.

The encoding parameter specifies whether the data is base64 or URL encoded. If the data is base64 encoded, the value of the encoding parameter must be 'base64'. For all other values of the parameter, including null, it is assumed that the data uses ASCII encoding for octets inside the range of safe URL characters and use the standard %xx hex encoding of URLs for octets outside that range. For example, '#', '%', '\', '?' should be replaced by %23, %25, %27, %3f respectively.

The 'data' scheme URL formed by this method uses the default US-ASCII charset. If you need need to set a different charset, you should form a 'data' scheme URL which explicitly specifies a charset parameter in the mediatype portion of the URL and call loadUrl(String) instead. Note that the charset obtained from the mediatype portion of a data URL always overrides that specified in the HTML or XML document itself.


public void loadUrl (String url)

Added in API level 1

Loads the given URL.

Parameters
url the URL of the resource to load 

学习webView控件使用的更多相关文章

  1. Android学习笔记50:使用WebView控件浏览网页

    在Android中,可以使用Webview控件来浏览网页.通过使用该控件,我们可以自制一个简单的浏览器,运行效果如图1所示. 图1 运行效果 1.WebView 在使用WebView控件时,首先需要在 ...

  2. 安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法

    一.我们先在XML当中自定义一个webview(Second_layout.xml) 代码如下: <?xml version="1.0" encoding="utf ...

  3. 【WP开发】WebView控件应用要点

    WebView控件我就不多作详细的介绍,相信大家都懂的,就算你没用过,你看他的名字和长相都知道它的用途了.就是用来显示HTML内容的. 在WP 8.1的Runtime App中,这个控件大致有以下几个 ...

  4. 通过webview控件访问网页

    初学android开发,在界面编辑器上放了一个webview控件,可惜不知道如何访问控件,在网上看到一段代码记录下来,算是第一次学习笔记. 要想让程序联网需要授权,在AndroidManifest.x ...

  5. (转载)android控件之WebView控件缩小

    android控件之WebView控件缩小 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-16我要评论 发现这个控件挺好用,能自已控制进度条,而且这个控件的功能非常壮大,先上个简单的 ...

  6. Delphi 7学习开发控件

    我们知道使用Delphi快速开发,很大的一方面就是其强大的VCL控件,另外丰富的第三方控件也使得Delphi程序员更加快速的开发出所需要的程序.在此不特别介绍一些概念,只记录自己学习开发控件的步骤.假 ...

  7. android WebView控件显示网页

    有时需要app里面显示网页,而不调用其他浏览器浏览网页,那么这时就需要WebView控件.这个控件也是很强大的,放大,缩小,前进,后退网页都可以. 1.部分方法 //支持javascriptweb.g ...

  8. Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

    在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用andro ...

  9. 过实现鹰眼图这个功能来进一步学习MapControl控件

    我们通过实现鹰眼图这个功能来进一步学习MapControl控件.在实现鹰眼图之前,我们需 要接口有更深入的了解. 变主动为被动-出接口(OutBound interface) COM编程类似客户端和服 ...

随机推荐

  1. VC2010 MFC文档类菜单快捷键无法加载问题

    问题1. 在菜单中项中输入&Run\tF5, 运行显示Run,而不是Run F5. 问题2.在Accelerator中绑定了快捷键,但运行程序不起作用. 以上2中问题在VC++2008和VC+ ...

  2. MVC中System.InvalidOperationException: 传入字典的模型项的类型为“XXX”,但此字典需要类型“XXA”的模型项

    出现此类错误的一个原因是Controller传过去的Model和View中的Model不是同一个Model

  3. Redis 二:入门基本篇

    .多数据库设置 - ,代表16个数据库 .glob风格通配符 keys * 返回所有 keys ba? 返回 bar keys b[a-z][a-z] 返回btt bar \x 匹配转义字符 .判断一 ...

  4. PHP中如何获取多个checkbox的值

    > > > weeks后的中括号不可漏,否则用PHP获取的时候只能取到最后一个值.之后PHP就很好处理了,如下: PHP获取checkbox值方法一: $weeks = $_POST ...

  5. 20160727noip模拟赛zld

    首先最优策略肯定是这样的:我们取出这个序列中的最大值,然后将整个序列分为左右两部分, 那么我们一定先把左右两部分合起来然后再与这个值合并 那么我们可以得出一个基于最值查询(rmq)的的算法,但是zld ...

  6. SQL Server 之 解锁

    下图,制作了一个可以维持1分钟的表锁: 下图,可以查询出被锁的表,其中 spid 是锁定表的进程ID(也是 session_id): 可以通过 select connect_time from sys ...

  7. MATLAB三维散点图的绘制(scatter3、plot3)

    MATLAB三维散点图的绘制(scatter3.plot3) (1)函数scatter3 用法:scatter3(x,y,z,'.',c) % c 为颜色,需和x,y,z长度相同 例子: x=[422 ...

  8. 【面试题030】最小的k个数

    [面试题030]最小的k个数 题目:     输入n个整数,找出其中最小的k个数.     例如输入4.5.1.6.2.7.3.8这8个字,则其中最小的4个数字是1.2.3.4.     思路一:   ...

  9. javascript-权威指南读书笔记(1)

    <script type="text/javascript"> //数组与object的关系 var obj = { name: "刘建伟", Ag ...

  10. hdu 2837 Calculation

    公式:a^b%p=a^(b%phi(p)+phi(p))%p   b>=phi(p) #include<iostream> #include<stdio.h> #incl ...