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是一个非常重要的组件,它允许开发者在应用程序内部嵌入一个浏览器控件,使得用户可以在应用中直接浏览网页内容。WebView基于WebKit渲染引擎,因此它能很好地支持HTML、JavaScript和CSS等...
在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部嵌入网页内容,从而实现类似浏览器的功能。WebView基于WebKit渲染引擎,因此它可以很好地支持HTML、JavaScript和CSS等网络技术,极大地...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页浏览功能,而无需离开应用。本文将深入探讨使用Android Studio开发WebView框架的源码,旨在帮助开发者理解和运用这一关键工具。 ...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页浏览功能,相当于在应用内部构建了一个小型的浏览器。WebView使用WebKit渲染引擎,能够很好地支持HTML、CSS、JavaScript等各种Web...
在Android开发中,为了提供用户友好的体验,有时我们需要在应用程序内部查看和处理Office文档,如Word、Excel或PowerPoint。X5WebView是腾讯QQ浏览器团队开源的一个高性能、跨平台的WebView组件,它基于Chromium内核...
在 Android 的 WebView 中实现 WebSocket 通信是当前移动端应用开发中的一个热门话题。WebSocket 是 HTML5 规范中的一项技术,可以实现客户端与服务器之间的实时双向通信。在桌面浏览器中,WebSocket 技术已经得到了...
在Android开发中,Webview通常被用来加载网页内容并实现应用程序与网页之间的交互。然而,有时我们可能有需求在不依赖Webview的情况下实现Android应用与JavaScript的交互。本文将深入探讨这种非Webview方式的交互...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与HTML、CSS和JavaScript的交互。随着HTML5技术的发展,WebView的使用愈发广泛,许多App都采用混合开发模式,利用WebView...
在Android开发中,WebView组件是一个允许应用显示网页的控件,它使用了WebKit渲染引擎来显示网页内容。随着移动应用越来越依赖于互联网功能,开发者需要能够处理Web内容,同时也要能够监控Web内容的变化,例如URL的...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。同时,WebView还提供了Java代码与JavaScript交互的能力,使得我们可以利用JavaScript的灵活性和Android原生功能的强大...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,并且能够实现JavaScript与Java代码之间的交互,极大地丰富了应用的功能。本文将深入探讨如何在Android的WebView中利用...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,而无需离开应用。WebView实质上就是一个轻量级的浏览器内核,基于WebKit引擎,能够解析和展示HTML、CSS以及JavaScript...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容。在某些场景下,用户可能需要查看WebView加载的网页中的图片,此时,提供一个点击图片放大显示的功能会大大提升用户体验...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。WebView不仅能够加载HTML、CSS和JavaScript,还可以调用原生Android API,从而构建混合型应用。本教程将...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现类似浏览器的功能。本文将详细讲解如何在Android的WebView中加载并显示SD卡上的图片,以及如何解决自Android 4.4...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与网页的交互。在一些场景下,我们可能需要在WebView中播放网络视频,例如YouTube、Vimeo等在线视频服务。然而,...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。当涉及到安全的网络通信时,HTTPS协议因其数据加密和身份验证特性成为首选。本文将深入探讨如何在Android...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容,实现混合开发。WebView不仅能够加载HTML、CSS和JavaScript,还可以与Android原生代码进行交互,使得网页和应用间的沟通...
在Android开发中,`WebView` 是一个非常重要的组件,它允许开发者在应用程序内嵌入一个浏览器,用于显示网页内容。本篇文章将详细讲解如何利用 `WebView` 实现网页数据的缓存,使得在网络不稳定或者断开的情况下,...
在Android应用开发中,WebView控件是一个非常重要的组件,它允许开发者在应用程序内嵌入一个浏览器,以便用户能够浏览网页内容。然而,随着网络安全性的不断提升,Android系统对WebView的使用也有了更严格的要求。在...