`

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

 
阅读更多

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

 图1 运行效果

 

1.WebView

   在使用WebView控件时,首先需要在xml布局文件中定义一个WebView控件,定义的方法如下:

1   <WebView 
2       android:id="@+id/webView"
3       android:layout_width="match_parent"
4       android:layout_height="match_parent"    />

   WebView中提供了很多方法,例如,我们可以使用canGoBack()方法判断是否能够从该网页返回上一个打开的网页;使用getTitle()和getUrl()方法获得当前网页的标题和URL路径;使用loadUrl(String url)方法加载所要打开的网页等等。如下的代码通过使用loadUrl()方法在WebView控件中打开了百度主页。

1   private WebView mWebView;
2   mWebView = (WebView)this.findViewById(R.id.webView);
3   mWebView.loadUrl("http://www.baidu.com/");

 

 2.WebSettings

   WebSettings用来设置WebView的属性和状态。WebSettings和WebView存在于同一个生命周期中,可以使用如下的方法获得WebSettings对象。

  WebSettings webSettings = mWebView.getSettings();

   在创建WebView时,系统会对WebView进行一些默认设置,当我们通过以上的方法得到WebSettings对象后,便可以从WebSettings对象中取出WebView的默认属性和状态了,当然了,我们也可以通过WebSettings对象对WebView的默认属性和状态进行设置。

  WebSettings提供的一些常用的设置WebView的属性和状态的方法如下:

  (1)setAllowFileAccess(boolean allow);       //设置启用或禁止访问文件数据

  (2)setBuiltInZoomControls(boolean enabled);   //设置是否支持缩放

  (3)setDefaultFontSize(int size);            //设置默认的字体大小

  (4)setJavaScriptEnabled(boolean flag);       //设置是否支持JavaScript

  (5)setSupportZoom(boolean support);       //设置是否支持变焦

 

3.WebViewClient

  WebViewClient主要用来辅助WebView处理各种通知、请求等事件。我们可以通过WebView的setWebViewClient()方法,为WebView对象指定一个WebViewClient,具体的实现方法如下所示:

复制代码
 1   MyWebViewClient myWebViewClient = new MyWebViewClient();
 2   mWebView.setWebViewClient(myWebViewClient);
 3   
 4     /*
 5      * Class  :  MyWebViewClient,用于辅助WebView,处理各种通知、请求等事件
 6      * Author  :    博客园-依旧淡然
 7      */
 8     private class MyWebViewClient extends WebViewClient {
 9         
10         //重写父类方法,让新打开的网页在当前的WebView中显示
11         public boolean shouldOverrideUrlLoading(WebView view, String url) {
12             view.loadUrl(url);
13             return true;
14         }
15         
16     }
复制代码

   可以看到,在如上的代码中,我们通过在子类MyWebViewClient中重写父类WebViewClient的shouldOverrideUrlLoading()方法,实现了让新打开的网页在当前的WebView中进行显示,而不是调用Android系统自带的浏览器进行访问。

  在WebViewClient中同样提供了很多的方法,比如以下一些:

  (1)doUpdateVisitedHistory(WebView view, String url, boolean isReload);           //更新历史记录

  (2)onFormResubmission(WebView view, Message dontResend, Message resend);      //重新请求网页数据

  (3)onLoadResource(WebView view, String url);                       //加载指定网址提供的资源

  (4)onPageFinished(WebView view, String url);                        //网页加载完毕

  (5)onPageStarted(WebView view, String url, Bitmap favicon);               //网页开始加载

  (6)onReceivedError(WebView view, int errorCode, String description, String failingUrl);  //报告错误信息

 

4.WebChromeClient

  WebChromeClient主要用来辅助WebView处理Javascript的对话框、网站图标、网站标题以及网页加载进度等。

  同样地,我们可以通过WebView的setWebChromeClient()方法,为WebView对象指定一个WebChromeClient。

  在WebChromeClient中,当网页的加载进度发生变化时,onProgressChanged(WebView view, int newProgress)方法会被调用;当网页的图标发生改变时,onReceivedIcon(WebView view, Bitmap icon)方法会被调用;当网页的标题发生改变时,onReceivedTitle(WebView view, String title)方法会被调用。利用这些方法,我们便可以很容易的获得网页的加载进度、网页的标题和图标等信息了,正如下面的代码所示:

复制代码
 1     MyWebChromeClient myWebChromeClient = new MyWebChromeClient();
 2     mWebView.setWebChromeClient(myWebChromeClient);
 3     
 4   /*
 5      * Class    :   用于辅助WebView,处理JavaScript的对话框、网站图标、网站标题、加载进度等
 6      * Author   :   博客园-依旧淡然
 7      */
 8     private class MyWebChromeClient extends WebChromeClient {
 9         
10         //获得网页的加载进度,显示在右上角的TextView控件中
11         public void onProgressChanged(WebView view, int newProgress) {
12             if(newProgress < 100) {
13                 String progress = newProgress + "%";
14                 mTextView_progress.setText(progress);
15             } else {
16                 mTextView_progress.setText(" ");
17             }
18         }
19         
20         //获得网页的标题,作为应用程序的标题进行显示
21         public void onReceivedTitle(WebView view, String title) {
22             MainActivity.this.setTitle(title);
23         }
24         
25     }
复制代码

 

5.WebView与Javascript

  在WebView中不仅可以运行HTML代码,更重要的是,WebView可以与Javascript互相调用。也就是说,在Javascript中可以获取WebView的内容,与此同时,在WebView中也可以调用Javascript里面的方法。

  下面就来说说如何在WebView中调用Javascript里面的方法。

  这里,我使用了百度地图的API接口(一份内嵌了Javascript的HTML文档),在该接口中提供如下的Javascript方法:

复制代码
1     /*********************************/
2     /*           查找地点            */
3     /*********************************/
4     var city = new BMap.LocalSearch(map,{renderOptions:{map:map,autoViewport:true}});   
5     
6     function findPlace(place)
7     {
8         city.search(place);
9   }
复制代码

   我们要做的就是在WebView中调用findPlace()方法,完成地点的查找。在WebView中调用Javascript里面的方法是通过代码WebView.loadUrl(“javascript:方法名()”)来实现的。如下的代码,从EditText控件中获得用户想要查找的地名,然后调用了Javascript中的findPlace()方法,进行查找。

复制代码
 1     /*
 2      * Function  :    点击事件处理
 3      * Author    :    博客园-依旧淡然
 4      */
 5     public void onClick(View view) {
 6         switch(view.getId()) {
 7         case R.id.imagebutton_search:                    //查找地名
 8             String str = mEditText_input.getText().toString();
 9             String url = "javascript:findPlace('" + str + "')";
10             mWebView.loadUrl(url);
11             break;
12         }
13     }
复制代码

   比如,我们对“圆明园”进行查找,可以看到如图2所示的查找结果。 

 

 图2 查找“圆明园”

 

分享到:
评论

相关推荐

    android 使用WebView浏览网页

    这篇博文“android 使用WebView浏览网页”可能是关于如何在Android应用中集成和使用WebView来展示网页内容的教程。下面将详细介绍WebView的相关知识点。 1. **WebView基本使用** - `WebView`是Android SDK中的一个...

    Android应用源码之38.WebView控件学习.zip

    在Android应用开发中,WebView控件是一个至关重要的组件,它允许开发者在应用程序内嵌入网页内容,实现浏览器的功能。这份源码提供了关于WebView的详细学习资料,非常适合Android开发者进行参考和学习。 首先,...

    android 使用webview控件,注意在android9.0以后必须使用https才能访问网页

    在Android应用开发中,WebView控件是一个非常重要的组件,它允许开发者在应用程序内嵌入一个浏览器,以便用户能够浏览网页内容。然而,随着网络安全性的不断提升,Android系统对WebView的使用也有了更严格的要求。在...

    Android开发中使用WebView控件浏览网页的方法详解

    在Android开发中使用WebView控件浏览网页的方法有很多,本文将详细介绍Android开发中使用WebView控件浏览网页的方法,包括WebView控件的功能、布局、设置、常用方法及相关操作技巧。 WebView控件的功能 -----------...

    Android WebView控件的用法

    在Android开发中,WebView控件是一个非常重要的组件,它允许我们在应用程序内部嵌入一个浏览器引擎,展示网页内容。这使得开发者能够实现与网页交互的功能,而无需离开应用本身,极大地提升了用户体验。下面我们将...

    Android开发学习笔记 浅谈WebView

    1.在要Activity中实例化WebView组件:WebView webView = new WebView(this); 2.调用WebView的loadUrl()方法,设置WevView要显示的网页:  互联网用:webView.loadUrl(“http://www.google.com”);  本地文件用:...

    android webview控件案例

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页浏览功能。WebView控件能够加载HTML、CSS和JavaScript代码,使得Android应用能够与网页内容进行交互。本案例"android webview控件...

    WebView控件基本使用 Android

    WebView 控件基本使用 Android WebView 控件是 Android 中的一个浏览器控件,通过这个控件可以直接访问网页,或者把输入的 HTML 字符串显示出来。WebView 的功能非常强大,支持 CSS、Java script 等 HTML 语言,...

    android WebView控件的使用

    WebView控件的使用是Android开发者必须掌握的一项技能,尤其对于那些希望在应用中嵌入网页功能或者实现轻量级浏览器应用的开发者来说。下面将详细介绍WebView的使用方法以及一些关键知识点。 1. **WebView的基本...

    webview控件的使用

    在Android开发中,WebView是一个非常重要的组件,它允许我们在原生的应用程序中嵌入网页内容,使得用户可以在不离开应用的情况下浏览网页。本篇将详细讲解WebView的使用、功能及常见配置。 首先,WebView的基本使用...

    Android应用源码之38.WebView控件学习-IT计算机-毕业设计.zip

    在Android应用开发中,WebView控件是一个至关重要的组件,它允许开发者在应用程序内嵌入网页内容,实现原生应用与Web应用的交互。本项目是一个关于WebView的学习示例,适用于毕业设计或移动开发App的学习。以下将...

    Android webview加载网页.zip

    通过学习和实践这些知识点,开发者可以创建出一个功能完善的WebView应用,让用户在不离开应用的情况下浏览网页,提升用户体验。对于“8.webview加载网页”这个文件,可能是具体实现这些功能的代码示例,进一步深入...

    Android WebView 去除标题

    1. 自定义布局:在XML布局文件中,不包含WebView的系统默认标题,而是使用自定义的布局,如全屏布局。这样,系统默认的标题栏就不会显示。 ```xml &lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:...

    Android应用内嵌网页WebView

    在Android应用开发中,内嵌WebView是一个非常常见的需求,它允许开发者在应用程序中展示网页内容。WebView组件是Android SDK提供的一种原生控件,能够直接在应用内部加载和显示HTML、CSS以及JavaScript等内容,极大...

    Android Studio平台下使用webview开发的android浏览器

    本资源配套本人的博客文章《Android开发】Android Studio中进行简单的WebView构建浏览器开发1》和《Android开发】Android Studio中进行简单的WebView构建浏览器开发2》进行使用,实现了基本的浏览器功能:包括:输入...

    练习:WebView控件使用(链接有道词典查单词)

    练习:WebView控件使用(链接有道词典查单词)

    Android网络功能开发-WebView控件使用的例子

    本示例主要讲解如何在Android项目中使用WebView控件来加载并显示网页。 首先,我们需要在AndroidManifest.xml文件中为应用添加Internet权限,因为加载网页需要网络访问: ```xml &lt;uses-permission android:name=...

Global site tag (gtag.js) - Google Analytics