Android[初级教程]第十三章 ProgressDialog控件

这次我们学习ProgressDialog控件,还是拿西游记来说,唐僧被妖怪们抓去了,那悟空得去救啊,但妖怪肯定不让啦,这就经过了一番打斗,当然,妖怪肯定打不过悟空啦,我们就用ProgressDialog来模拟打妖怪的过程,设定为100只妖怪,打完这100只妖怪才能救出师傅.看图:

Android[初级教程]第十三章 ProgressDialog控件

Android[初级教程]第十三章 ProgressDialog控件

呵呵,这次悟空没出手,让八戒跟沙僧抢了回头功,来看main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:text="悟空去救师傅" android:id="@+id/wukong"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="八戒去救师傅" android:id="@+id/bajie"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="沙僧去救师傅" android:id="@+id/shaseng"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

</LinearLayout>

还是老样子,定义了几个按钮,接下来看Activity的java源码:

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class ProgressDialogDemo extends Activity implements OnClickListener
{
private ProgressDialog Dialog;
private Handler mhandler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.progressdialog);

Button wukong = (Button) findViewById(R.id.wukong);
wukong.setOnClickListener(this);

Button bajie = (Button) findViewById(R.id.bajie);
bajie.setOnClickListener(this);

Button shaseng = (Button) findViewById(R.id.shaseng);
shaseng.setOnClickListener(this);
}

@Override
public void onClick(View v)
{
//设定Handler对象,主要是处理新开线程完毕后交给主线程来处理的数据
mhandler = new Handler(){
@Override
public void handleMessage(Message msg)
{
String name =(String)msg.obj;
Toast.makeText(ProgressDialogDemo.this, name + "把师傅救出来了", 1).show();
}
};
//创建ProgressDialog对象
Dialog = new ProgressDialog(this);
//设定ProgressDialog的样式为进度条
Dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设定ProgressDialog的最大值为100,这里就是100只小妖怪啦
Dialog.setMax(100);
//设定ProgressDialog不能取消,你不能半途而废啊,当然要100只打完啦
Dialog.setCancelable(false);

String name = null;

switch (v.getId())
{
case R.id.wukong:
//设定名字,看是谁在打妖怪啊
name = "孙悟空";
Dialog.setTitle(name);
//图片
Dialog.setIcon(R.drawable.wukong);
//消息
Dialog.setMessage("悟空在打妖怪");
//自定义打斗的方法
doFlight(name);

break;

case R.id.bajie:

//同上
name = "猪八戒";
Dialog.setTitle(name);
Dialog.setIcon(R.drawable.bajie);
Dialog.setMessage("八戒在打妖怪");
doFlight(name);

break;

case R.id.shaseng:

//同上
name = "沙和尚";
Dialog.setTitle(name);
Dialog.setIcon(R.drawable.shaseng);
Dialog.setMessage("沙僧在打妖怪");
doFlight(name);

break;
}

}

private void doFlight(final String name)
{
//显示ProgressDialog
Dialog.show();

//新开一条线程
new Thread()
{
//打完妖怪的数量
int count = 0;
public void run()
{
try
{
//打完妖怪小于100只的时候运行的方法
while(count <= 100){
Dialog.setProgress(count++);
//睡眠0.2秒,你也得让他们休息一下啊,呵呵
Thread.sleep(200);
}
Dialog.cancel();

//给handler发送消息,看是谁在打妖怪,handler是主线程中的
Message message = new Message();
message.obj = name;
mhandler.sendMessage(message);

} catch (InterruptedException e)
{
Dialog.cancel();
}

};

}.start();

}
}

这里面涉及了子线程和主线程的通信,通过Handler可以将子线程运行的数据最终交给主线程,线程这一章我们会在接下来讲,OK,这一章也讲完了,谢谢

摘自:kangkangz4的专栏

分类:默认分类 时间:2012-01-24 人气:1
本文关键词:
分享到:

相关文章

  • Android中ProgressDialog的简单示例 2012-11-02

     网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下: 建立android工程等工作都略去,Google一下就可以了。 下面来介绍主要的Activity ProgressBarDemo.java package com.lveyo.android.demo.progressbar; import android.app.Activity; import android.app.ProgressDialog; import

  • [Android每日一讲]2012.11.01 程序加载中,请稍后 - ProgressDialog 与线程整合应用 2013-02-10

    1. 范例说明 常看见Windows窗口程序里或Flash程序的“加载中”对话框,在Android里,则是通过ProgressDialog来运行,这个类封装在Android.app.ProgressDialog里。 该范例将设计一个按钮,在单击按钮之后开始线程的周期,在运行的过程中显示ProgressDialog,最后当线程运行完毕时,选择结束ProgressDialog对话窗口。 2. 运行结果 3. 编写代码 [java] Button.OnClickListener myShowProgr

  • Android UI(四)云通讯录项目之云端更新进度条实现 2012-08-29

    作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节。 交流QQ群:【编程之美 365234583】http://jq.qq.com/?_wv=1027&k=XVfBTo 一、前言 继续AndroidUI系列,UI其实是个前端活,美感是最终的boss阶段。泥瓦匠的美感也就给你们评论评论哈哈,我等UI写到一定地步。我想写下Android的一系列简单入门。为了巩固提升呗。哈哈。下面介入正题

  • Android之Dialog分析 2013-12-20

    Android之Dialog分析 以Dialog为引导,Android的弹出式消息一共是三种(据我所知):Dialog,tocast,notification 其三种弹出式消息各有所长。今天重点是分析其中的Dialog。Android的Dialog是android界面编程的重点。当然android被称之为“页程序”就更体现页面编程,UI线程了解的重要性了。 本文的目录结构: 1、Android中的几种Dialog 2、Dialog的创建方式 3、Android的警告对话框AlertDialog

  • Android RakNet 系列之五 视频通讯 OpenCV4Android 2013-12-29

    简介 引入OpenCV4Android的目标是在Raknet框架下解决视频通讯的问题,目前在ubuntu下已成功实现,现在把它引用到Android平台下。 OpenCV是一个基于开源发行的跨平台计算机视觉库,可以在 Windows, Android, Maemo,FreeBSD, OpenBSD, iOS,Linux 和Mac OS等平台上运行。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面

  • android dialog --ProgressDialog 进度条对话框详解 2015-01-28

    首先在onCreateDialog方法里创建一个ProgressDialog,如下: //this表示该对话框是针对当前Activity的 progressDialog = new ProgressDialog(this); //设置最大值为100 progressDialog.setMax(100); //设置进度条风格STYLE_HORIZONTAL progressDialog.setProgressStyle( ProgressDialog.STYLE_HORIZONTAL); prog

  • android如何在BaseAdapter内使用notifyDataSetChanged()方法以及线程的使用 2012-01-04

    有时候我们需要修改列表里的数据,并实时刷新,我们除了在在外部调用adapter.notifyDataSetChanged()方法来通知activity刷新, 如果在adapter内部有涉及到更新数据,删除或者增加数据,就可以直接在adapter内部调用notifyDataSetChanged()这个方法,前提是该listview绑定的数据有改变。 以下例子结合Handler,线程展示 public class MyAdapter extends BaseAdapter { private fin

  • android进度条的样式 2012-01-28

    android 进度条的样式 例1:(默认样式(中等圆形)) Xml代码 <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 例2:(超大圆形) Xml代码 <ProgressBar android:id="@+id/progressBar2" android:layout_width="wr

  • 从零开始学android(Dialog对话框.二十五.) 2012-06-28

    在图形界面之中,对话框也是人机交互的一种重要形式,程序可以通过对话框对用户进行一些信息的提示,而用户也可以通过对话框的和程序进行一些简单的交互操作。 在Android的开发之中,所有的对话框都是从android.app.Dialog类继承而来,此类继承结构如下: java.lang.Object ?android.app.Dialog DIalog常用的方法 1 public void setTitle(CharSequence title) 普通 设置对话框的显示标题 2 public voi

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.229 (s). 10 q(s)