`
yezhiqiu-love
  • 浏览: 168697 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android开发中WebView的使用(附完整程序)

阅读更多

WebView是个好东西,作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,javascript,css等。有时候,我们完 全可以把UI甚至数据处理都交给WebView,配合PHP等服务端程序,这样Android开发就变成了网页开发,可以省很多精力。
下面是一个WebView的简单例子,如果用把所有功能都交给服务端脚本处理,这个程序已经很完整了,你只要写好网页,把URL填上,再编译,就是一个新软件。
程序功能介绍:打开网页同时显示一个ProgressDialog,网页载入完毕则隐藏,点击页面上链接时再次显示ProgressDialog,载入完隐藏,可用返回键返回上一页。
XML布局:

 

<?xml version="1.0" encoding="UTF-8"?>
<AbsoluteLayout android:orientation="vertical" android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <WebView android:id="@+id/wv"
    	android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
    	android:layout_x="0.0dip"
    	android:layout_y="0.0dip"
    	android:layout_weight="1.0" />
</AbsoluteLayout>

 JAVA代码:

 

package com.pocketdigi.webview;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class main extends Activity {
    /** Called when the activity is first created. */
	WebView wv;
	ProgressDialog pd;
	Handler handler;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();//执行初始化函数
        loadurl(wv,"http://www.pocketdigi.com");
        handler=new Handler(){
        	public void handleMessage(Message msg)
    	    {//定义一个Handler,用于处理下载线程与UI间通讯
    	      if (!Thread.currentThread().isInterrupted())
    	      {
    	        switch (msg.what)
    	        {
    	        case 0:
    	        	pd.show();//显示进度对话框        	
    	        	break;
    	        case 1:
    	        	pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。
    	        	break;
    	        }
    	      }
    	      super.handleMessage(msg);
    	    }
        };
    }
    public void init(){//初始化
    	wv=(WebView)findViewById(R.id.wv);
        wv.getSettings().setJavaScriptEnabled(true);//可用JS
        wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
        wv.setWebViewClient(new WebViewClient(){   
            public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
            	loadurl(view,url);//载入网页
                return true;   
            }//重写点击动作,用webview载入
 
        });
        wv.setWebChromeClient(new WebChromeClient(){
        	public void onProgressChanged(WebView view,int progress){//载入进度改变而触发 
             	if(progress==100){
            		handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框
            	}   
                super.onProgressChanged(view, progress);   
            }   
        });
 
    	pd=new ProgressDialog(main.this);
        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        pd.setMessage("数据载入中,请稍候!");
    }
    public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键
        if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {   
            wv.goBack();   
            return true;   
        }else if(keyCode == KeyEvent.KEYCODE_BACK){
        	ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认
        	return true; 
        }   
        return super.onKeyDown(keyCode, event);   
    }
    public void ConfirmExit(){//退出确认
    	AlertDialog.Builder ad=new AlertDialog.Builder(main.this);
    	ad.setTitle("退出");
    	ad.setMessage("是否退出软件?");
    	ad.setPositiveButton("是", new DialogInterface.OnClickListener() {//退出按钮
			@Override
			public void onClick(DialogInterface dialog, int i) {
				// TODO Auto-generated method stub
				main.this.finish();//关闭activity
 
			}
		});
    	ad.setNegativeButton("否",new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int i) {
				//不退出不用执行任何操作
			}
		});
    	ad.show();//显示对话框
    }
    public void loadurl(final WebView view,final String url){
    	new Thread(){
        	public void run(){
        		handler.sendEmptyMessage(0);
        		view.loadUrl(url);//载入网页
        	}
        }.start();
    }
 
 
}
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    android开发中WebView的使用

    在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部嵌入一个浏览器控件,使得用户可以在应用中直接浏览网页内容。WebView基于WebKit渲染引擎,因此它能很好地支持HTML、JavaScript和CSS等...

    android开发中WebView的使用.pdf

    在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部嵌入网页内容,从而实现类似浏览器的功能。WebView基于WebKit渲染引擎,因此它可以很好地支持HTML、JavaScript和CSS等网络技术,极大地...

    Android Studio 开发的WebView 框架源码

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页浏览功能,而无需离开应用。本文将深入探讨使用Android Studio开发WebView框架的源码,旨在帮助开发者理解和运用这一关键工具。 ...

    android--开发中WebView的使用.docx

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页浏览功能,相当于在应用内部构建了一个小型的浏览器。WebView使用WebKit渲染引擎,能够很好地支持HTML、CSS、JavaScript等各种Web...

    Android 基于x5Webview 浏览文件 office文档

    在Android开发中,为了提供用户友好的体验,有时我们需要在应用程序内部查看和处理Office文档,如Word、Excel或PowerPoint。X5WebView是腾讯QQ浏览器团队开源的一个高性能、跨平台的WebView组件,它基于Chromium内核...

    在android的webview中实现websocket通信

    在 Android 的 WebView 中实现 WebSocket 通信是当前移动端应用开发中的一个热门话题。WebSocket 是 HTML5 规范中的一项技术,可以实现客户端与服务器之间的实时双向通信。在桌面浏览器中,WebSocket 技术已经得到了...

    android不使用webview与js交互

    在Android开发中,Webview通常被用来加载网页内容并实现应用程序与网页之间的交互。然而,有时我们可能有需求在不依赖Webview的情况下实现Android应用与JavaScript的交互。本文将深入探讨这种非Webview方式的交互...

    Android中WebView使用

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与HTML、CSS和JavaScript的交互。随着HTML5技术的发展,WebView的使用愈发广泛,许多App都采用混合开发模式,利用WebView...

    Android中的webview监听每次URL变化实例

    在Android开发中,WebView组件是一个允许应用显示网页的控件,它使用了WebKit渲染引擎来显示网页内容。随着移动应用越来越依赖于互联网功能,开发者需要能够处理Web内容,同时也要能够监控Web内容的变化,例如URL的...

    android使用webView实现java程序与js脚本的相互调用

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。同时,WebView还提供了Java代码与JavaScript交互的能力,使得我们可以利用JavaScript的灵活性和Android原生功能的强大...

    Android中webview使用js与java交互

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,并且能够实现JavaScript与Java代码之间的交互,极大地丰富了应用的功能。本文将深入探讨如何在Android的WebView中利用...

    Android中的WebView详细介绍

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,而无需离开应用。WebView实质上就是一个轻量级的浏览器内核,基于WebKit引擎,能够解析和展示HTML、CSS以及JavaScript...

    Android中实现WebView点击图片放大显示

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容。在某些场景下,用户可能需要查看WebView加载的网页中的图片,此时,提供一个点击图片放大显示的功能会大大提升用户体验...

    android 简单webview的使用

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。WebView不仅能够加载HTML、CSS和JavaScript,还可以调用原生Android API,从而构建混合型应用。本教程将...

    Android开发WebView获取SD卡图片并显示

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现类似浏览器的功能。本文将详细讲解如何在Android的WebView中加载并显示SD卡上的图片,以及如何解决自Android 4.4...

    Android中WebView播放网上视频,横竖屏切换

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与网页的交互。在一些场景下,我们可能需要在WebView中播放网络视频,例如YouTube、Vimeo等在线视频服务。然而,...

    Android通过WEBVIEW调用HTTPS

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。当涉及到安全的网络通信时,HTTPS协议因其数据加密和身份验证特性成为首选。本文将深入探讨如何在Android...

    Android混合开发之webview的demo

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容,实现混合开发。WebView不仅能够加载HTML、CSS和JavaScript,还可以与Android原生代码进行交互,使得网页和应用间的沟通...

    Android WebView 实现缓存网页数据

    在Android开发中,`WebView` 是一个非常重要的组件,它允许开发者在应用程序内嵌入一个浏览器,用于显示网页内容。本篇文章将详细讲解如何利用 `WebView` 实现网页数据的缓存,使得在网络不稳定或者断开的情况下,...

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

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

Global site tag (gtag.js) - Google Analytics