WebView入门

webview是Android展示网页信息的控件,本文就来详细讲解这个控件的用法。虽说是详细讲解,但也仅仅是提供入门使用,对于很多高级要求,这里暂不涉及。

一、初识webview

1.1 放入自己的工程

使用控件仍旧是老样子,在xml中写入,在java中找到控件并进行处理。此外还要记得加访问网络的权限。

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

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webView);
        webView.loadUrl("http://www.baidu.com/");
}

这样其实就可以运行啦,但是你在运行的时候会发现程序启动后会有下面的界面

也就是说这个控件当前没有自己展示网页的能力,还需要调用浏览器来实现。

二、WebView的方法

2.1 加载特定网页

webView.loadUrl("http://www.baidu.com/");

2.2 加载本地的html文件

现将本地文件放入asset中,然后用下面的方法加载

webView.loadUrl("file:///android_asset/XX.html");  

2.3 加载html字符串

String htmlString = "<h1>Title</h1><p>This is HTML text<br /><i>Formatted in italics</i><br />Anothor Line</p>";
// 载入这个html页面
webView.loadData(htmlString, "text/html", "utf-8");

2.4 加载指定的url并携带http header数据

public void loadUrl (String url, Map<String, String> additionalHttpHeaders) 

2.5 重新加载

注意:所有资源都会重新加载,慎用

public void reload ()  

2.6 结束加载

public void stopLoading () 

2.7 前进或后退到指定点

以当前的index为起始点前进或者后退到历史记录中指定的steps,  如果steps为负数则为后退,正数则为前进

public void goBackOrForward (int steps) 

更多的API请参考这篇博文:http://blog.csdn.net/typename/article/details/39030091

三、使用WebViewClient

webview可以设置一个webviewclient对象,通过它就可以来进行网页加载的处理了。

3.1 shouldOverrideUrlLoading

shouldOverrideUrlLoading并不是每次都在onPageStarted之前开始调用的,就是说一个新的URL不是每次都经过shouldOverrideUrlLoading的,只有在调用webview.loadURL的时候才会调用。而设置loadUrl时候是用哪个浏览器来加载。

     WebView webView = (WebView) findViewById(R.id.webView);
        webView.loadUrl("http://www.baidu.com/");
    webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
    }

如上面展示的,webview首先调用loadURL方法,然后webviewClient触发了加载url的方法,然后将展示网页的工作自己承担了下来。重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。

如果你想要webview屏蔽某个网站的超链接,或者是要对某些特殊的url进行处理,那么就需要在这里进行修改啦。屏蔽连接的话,直接返回true即可,如果要进行url判断,可以如下操作

if (url.endsWith(".apk")) {
     download(url);//下载处理
}

3.2 onLoadResource

在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。如下的load会在网页加载元素时调用很多次。

        @Override
            public void onLoadResource(WebView view, String url) {
                // TODO 自动生成的方法存根
                super.onLoadResource(view, url);
                System.out.println("load");
            }    

3.3 onPageStarted & onPageFinished

网页开始加载和结束加载时调用,一般的过程就是onpageStarted->onLoadResource->onPageFinished

        @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO 自动生成的方法存根
                super.onPageStarted(view, url, favicon);
                Log.i(TAG, "onPageStarted");
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO 自动生成的方法存根
                super.onPageFinished(view, url);
                Log.i(TAG, "onPageFinished");
            }

四、处理前进和后退操作

我们应该对webview进行前进和后退的处理,需要在activity的按键时间中处理。这样我们就能通过手机的返回键进行网页的返回了。

  public boolean onKeyDown(int keyCoder, KeyEvent event) {
        /**
         * canGoBack()检查是否有可以后退的记录
         * anGoForward()方法可以检查是否有可以前进的历史记录。
                如果你不执行这种检查,一旦 goBack() 和 goForward()方法到达历史记录顶端,它们将什么也不做。
         */
        if (webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK) {
            //webView.goForward(); // 前进
            webView.goBack(); // goBack()表示返回webView的上一页面,后退
            return true;
        }
        return false;
    }
时间: 2024-10-12 19:52:59

WebView入门的相关文章

Android基础入门教程——7.5.4 WebView文件下载

Android基础入门教程--7.5.4 WebView文件下载 标签(空格分隔): Android基础入门教程 本节引言 本节给大家介绍的是WebView下载文件的知识点,当我们在使用普通浏览器的时候,比如UC, 当我们点击到一个可供下载链接的时候,就会进行下载,WebView作为一个浏览器般的组件, 当然也是支持下载,我们可以自己来写下载的流程,设置下载后的文件放哪,以什么文件名 保存,当然也可以调用其它内置的浏览器来进行下载,比如Chrome,UC等等! 下面给大家演示下用法! 1.调用其

Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina等网页的小demo,如果对swift的语法不感兴趣的同学可以直接跳到第二部分来感受下Swift的魅力-(本文的demo源码已上传至github:https://github.com/iOSGeek0829/XSurfing) 一.Swift常用语法 Swift是Apple去年推出的一门新的语言,基于C和Objective-C,而没有C的一些兼容约束,它采用了安全的编程模式和添加现代的功能

Android基础入门教程——7.5.6 WebView处理网页返回的错误码信息

Android基础入门教程--7.5.6 WebView处理网页返回的错误码信息 标签(空格分隔): Android基础入门教程 本节引言: 嘿嘿,假如你们公司是做HTML5端的移动APP的,就是通过WebView来显示网页的,假如你访问的网页 不存在,或者其他错误,报404,401,403,30X等错误的状态码,如果直接弹出WebView默认的错误 提示页面,可能显得不那么友好,我们可以重写WebViewClient的onReceivedError()方法来实现我们 想要的效果,一般的做法有两

Android基础入门教程——7.5.2 WebView和JavaScrip交互基础

Android基础入门教程--7.5.2 WebView和JavaScrip交互基础 标签(空格分隔): Android基础入门教程 本节引言: 在上一节中我们对Android的WebView(网页视图)进行了学习,相信已经了解了WebView的基本用法: 而本节我们要学习的就是通过:HTML -> JS ->Java来完成HTML5端与Android手机间的 互访!好的,话不多说,有吗有真相,让我们通过编写代码来体验这种微妙的联系吧~ PS:为了方便,本节用到的HTML都是以文件的形式放到a

Android基础入门教程——7.5.3 Android 4.4后WebView的一些注意事项

Android基础入门教程--7.5.3 Android 4.4后WebView的一些注意事项 标签(空格分隔): Android基础入门教程 本节引言: 本节参考原文:Android 4.4 中 WebView 使用注意事项.md 从Android 4.4开始,Android中的WebView不再是基于WebKit的,而是开始基于Chromium,这个改变 使得WebView的性能大幅提升,并且对HTML5,CSS,JavaScript有了更好的支持! 虽然chromium完全取代了以前的We

Android基础入门教程——7.5.5 WebView缓存问题

Android基础入门教程--7.5.5 WebView缓存问题 标签(空格分隔): Android基础入门教程 本节引言: 现在很多门户类信息网站,比如虎嗅,ifanr,钛媒体等等的APP,简单点说是信息阅读类的APP,很多 都是直接嵌套一个WebView用来显示相关资讯的,这可能就涉及到了WebView的缓存了!所谓的页面缓存 就是指:保存加载一个网页时所需的HTML,JS,CSS等页面相关的数据以及其他资源,当没网的时候或者 网络状态较差的时候,加载本地保存好的相关数据!而实现这个缓存的方

Android基础入门教程——7.5.1 WebView(网页视图)基本用法

Android基础入门教程--7.5.1 WebView(网页视图)基本用法 标签(空格分隔): Android基础入门教程 本节引言 本节给大家带来的是Android中的一个用于显示网页的控件:WebView(网页视图),现在Android应用 层开发的方向有两种:客户端开发和HTML5移动端开发!所谓的HTML5端就是:HTML5 + CSS + JS来构建 一个网页版的应用,而这中间的媒介就是这个WebView,而Web和网页端可以通过JS来进行交互,比如, 网页读取手机联系人,调用手机相

UWP开发入门(二十三)——WebView

本篇讨论在UWP开发中使用WebView控件时常见的问题,以及一些小技巧. WebView是实际开发中常用的控件,很多大家抱怨的套网页的应用都是通过WebView来实现的.这里要澄清一个问题,套网页的应用并不一定是差的应用,很多网页采用了响应式设计,假设网页不存在复杂的交互,提取网页的正文部分嵌入WebView,可以说方便快捷省时省力.比如亚马逊.驴妈妈这些UWP APP都还挺不错的,京东那个网页就套的比较差了…… WebView最为简单的用法如下: <WebView Source="ht

ios开发入门- WebView使用

转自:http://mahaile.blog.51cto.com/2891586/1021515/ 目标 : webview使用 在一些移动app中,有时程序会载入 外表的html 界面, android 有 webView ios 有吗, 答案是肯定的, 下面我们来看看 ios 下面的webView 是怎么使用的吧 启动Xcode 创建一个新的ios 项目 , 模板选择 Signle view application , 项目名称命名为 Iphone_sample_WebView class