`
abc20899
  • 浏览: 929034 次
  • 性别: 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的使用.pdf

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

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

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

    Android Studio 开发的WebView 框架源码

    本文将深入探讨使用Android Studio开发WebView框架的源码,旨在帮助开发者理解和运用这一关键工具。 首先,WebView是Android SDK的一部分,它是基于Chromium引擎的,因此它具有与现代浏览器相似的功能,如...

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

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

    Android中webview使用x5内核集成demo

    Android x5内核集成demo 解决webview在使用内核时跟h5混合调用时出现的白屏,加载缓慢,vue报错各种兼容问题。在x5内核加载失败时,会切换成系统本身的内核来加载h5内容。如果项目上架Google商店等海外市场运营的,...

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

    Android开发中WebView的使用是一个重要的知识点,它允许开发者在Android应用中嵌入网页内容,提供与原生应用相似的用户体验。以下是从提供的文档内容中提取的Android WebView使用相关知识点。 首先,WebView组件是...

    Android 基于x5Webview 浏览文件 office文档

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

    android不使用webview与js交互

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

    在android的webview中实现websocket通信

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

    Android APP使用WebView调用H5页面完成摄像头扫描二维码软件源码.rar

    这个源码示例展示了如何在WebView中调用H5页面,并利用Android原生的摄像头功能来扫描二维码,实现二维码识别。下面我们将详细探讨这个过程中涉及的关键知识点。 1. **WebView组件**:WebView是Android SDK提供的一...

    Android中WebView使用

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

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

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

    Android中Webview与原生界面交互及二维码扫描功能实现

    总之,"Android中Webview与原生界面交互及二维码扫描功能实现"项目涵盖了Android开发中的关键技术点,包括WebView的使用、JavaScript与原生代码的交互,以及二维码扫描功能的集成。通过学习和实践这个项目,开发者...

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

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

    android 8.0 webview 拍照预览、二维码扫描

    android 8.0 webview 拍照、预览、二维码扫描比较完整的例子,对于权限检查控制,有比较完善的提示写法。可以下载后,直接在android studid上运行,编译版本和target版本均是SDK android 8.0,最低版本设置成了...

    Android使用WebView调用H5完成摄像头扫描二维码

    在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android中利用WebView来调用H5页面,从而实现摄像头扫描二维码的功能。 首先,我们需要理解WebView的...

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

    下面我们将详细讨论如何在Android的WebView中播放网上视频,并处理横竖屏切换。 首先,我们需要了解WebView的基本用法。在XML布局文件中添加WebView组件,并在对应的Activity或Fragment中初始化并加载网页: ```...

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

    本文将详细讲解如何在Android的WebView中加载并显示SD卡上的图片,以及如何解决自Android 4.4(KitKat)版本后出现的WebView无法直接访问SD卡图片的问题。 首先,我们需要理解Android 4.4引入的安全限制。从KitKat...

    Android中webview使用js与java交互

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

Global site tag (gtag.js) - Google Analytics