Android开发中ProgressDialog简单用法示例
作者:guochongcan 发布时间:2021-11-03 10:17:37
标签:Android,ProgressDialog
本文实例讲述了Android开发中ProgressDialog简单用法。分享给大家供大家参考,具体如下:
网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下:
建立android工程等工作都略去,Google一下就可以了。
下面来介绍主要的Activity
ProgressBarDemo.java
package com.lveyo.android.demo.progressbar;
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.widget.Button;
import android.widget.TextView;
public class ProgressBarDemo extends Activity {
private TextView statusTextView;
private Button beginBtn;
private ProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
statusTextView = (TextView)findViewById(R.id.status);
beginBtn = (Button)findViewById(R.id.beginBtn);
setListener();
}
/**
* 用Handler来更新UI
*/
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//关闭ProgressDialog
progressDialog.dismiss();
//更新UI
statusTextView.setText("Completed!");
}};
/**
* 点击按钮事件listener
*/
private void setListener(){
beginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示ProgressDialog
progressDialog = ProgressDialog.show(ProgressBarDemo.this, "Loading...", "Please wait...", true, false);
//新建线程
new Thread(){
@Override
public void run() {
//需要花时间计算的方法
Calculation.calculate(4);
//向handler发消息
handler.sendEmptyMessage(0);
}}.start();
}
});
}
}
package com.lveyo.android.demo.progressbar;
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.widget.Button;
import android.widget.TextView;
public class ProgressBarDemo extends Activity {
private TextView statusTextView;
private Button beginBtn;
private ProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
statusTextView = (TextView)findViewById(R.id.status);
beginBtn = (Button)findViewById(R.id.beginBtn);
setListener();
}
/**
* 用Handler来更新UI
*/
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//关闭ProgressDialog
progressDialog.dismiss();
//更新UI
statusTextView.setText("Completed!");
}};
/**
* 点击按钮事件listener
*/
private void setListener(){
beginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示ProgressDialog
progressDialog = ProgressDialog.show(ProgressBarDemo.this, "Loading...", "Please wait...", true, false);
//新建线程
new Thread(){
@Override
public void run() {
//需要花时间计算的方法
Calculation.calculate(4);
//向handler发消息
handler.sendEmptyMessage(0);
}}.start();
}
});
}
}
Calculation.java
package com.lveyo.android.demo.progressbar;
/**
* 示意方法
* @author lveyo
*
*/
public class Calculation {
public static void calculate(int sleepSeconds){
try {
Thread.sleep(sleepSeconds * 1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
package com.lveyo.android.demo.progressbar;
/**
* 示意方法
* @author lveyo
*
*/
public class Calculation {
public static void calculate(int sleepSeconds){
try {
Thread.sleep(sleepSeconds * 1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
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="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/status"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:id="@+id/beginBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="begin"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/status"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:id="@+id/beginBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="begin"
/>
</LinearLayout>
在android中,通常我们无法在单独的线程中更新UI,而要在主线程中,这也就是为什么我们要使用 Handler了,当handler收到消息中,它会把它放入到队列中等待执行,通常来说这会很快被执行。
希望本文所述对大家Android程序设计有所帮助。
来源:http://guocc.iteye.com/blog/1181467


猜你喜欢
- 刚接触maven就是在公司里配置好的,所以一直以来使用都没毛病,所以一直没有去动这些固有的东西。但是,后来把公司的电脑拿回家之后,发现有的东
- 一,Maven 依赖 pom.xml配置1, 去掉默认日志,以便切换到log4j2的日志依赖2, 然后添加如下两个日志依赖二,在工程根目录下
- 说明:以下的代码基于httpclient4.5.2实现。我们要使用java的HttpClient实现get请求抓取网页是一件比较容易实现的工
- Android ListView仿聊天界面效果图的具体代码,供大家参考,具体内容如下1.首先页面总布局(ListView + LinearL
- 前言java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也不能做出来非常好用,
- 一、淘宝商品详情页效果我们的效果二、实现思路 使用两个scrollView,两个scroll
- Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都会有各自的用途,以及创建和销毁的时间,有的区
- 本文实例讲述了C++实现的求解多元一次方程。分享给大家供大家参考,具体如下:注:这里计算的是n*n的等距矩阵,代码如下:#include&l
- 本文实例讲述了C#获取网页源代码的方法。分享给大家供大家参考。具体如下:public string GetPageHTML(string u
- 引言 批量下载思路,首先前端发送下载请求,携带必要参数,
- 下面通过图文并茂的方式给大家讲解下Java开发环境配置,具体内容如下:对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA
- 关键字 static1. 概述static 是一种修饰符static 是Java中表静态的关键字它可以修饰成员变量、成员方法、代码块被sta
- springboot集成mybatis plus和dynamic-datasource注意事项环境spring-boot-starter-p
- 微服务通过Feign调用进行密码安全认证在项目中,微服务之间的通信也是通过Feign代理的HTTP客户端通信,为了保护我们的业务微服务不被其
- using System;using System.Collections;using System.Windows.Forms;names
- C#是一种编译型的语言,程序执行,首先要经过编译器编译,如何让C#像一种脚本一样,在要执行的时候,进行编译,这里,我们可以用Microsof
- 上一篇讲解了类型,通过类型来开始本篇的学习;int a[10];上述代码中的a是什么类型呢?相信很多人都知道是一个数组类型,具体来说是一个i
- 一个Maprduce程序主要包括三部分:Mapper类、Reducer类、执行类。Maven项目下所需依赖<dependencies&
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk),总的流程分为以下6个步骤:1、安
- 一、实现对ScrollViewer样式的自定义主要包括:1、滚动条宽度设置2、滚动条颜色3、滚动条圆角4、滚动条拉动时的效果mouseove