如何正确地使用android中的qprogressdialogg

Android编程实现加载等待ProgressDialog的方法_Android
作者:用户
本文讲的是Android编程实现加载等待ProgressDialog的方法_Android,
本文实例讲述了Android编程实现加载等待ProgressDialog的方法。分享给大家供大家参考,具体如下:
显示progressDialog的类:
import android.app.ProgressD
本文实例讲述了Android编程实现加载等待ProgressDialog的方法。分享给大家供大家参考,具体如下:
显示progressDialog的类:
import android.app.ProgressD
import android.content.C
import android.content.DialogI
import android.content.DialogInterface.OnCancelL
public class ShowProgressDialog {
public static ProgressD
public static void show(Context context,String msg,Thread thread) {
final Thread th =
wait = new ProgressDialog(context);
//设置风格为圆形
wait.setProgressStyle(ProgressDialog.STYLE_SPINNER);
wait.setTitle(null);
wait.setIcon(null);
//设置提示信息
wait.setMessage(msg);
//设置是否可以通过返回键取消
wait.setCancelable(true);
wait.setIndeterminate(false);
//设置取消监听
wait.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
th.interrupt();
wait.show();
调用的时候显示progressDialog作为主线程,另起线程进行业务处理,等到业务处理完调用ShowProgressDialog.wait.dismiss();关闭progressDialog。处理完如需提示信息,直接在业务线程中是不行的,需要通过Handler实现线程和activity的交互
希望本文所述对大家Android程序设计有所帮助。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
progressdialog
progressdialog、progressdialog样式、自定义progressdialog、progressdialog不显示、qprogressdialog,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!Android 中通过实现线程更新Progressdialog (对话进度条)
作者:潘侯爷
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android 中通过实现线程更新Progressdialog (对话进度条)的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
作为开发者我们需要经常站在用户角度考虑问题,比如在应用商城下载软件时,当用户点击下载按钮,则会有下载进度提示页面出现,现在我们通过线程休眠的方式模拟下载进度更新的演示,如图(这里为了截图方便设置对话进度条位于屏幕上方):
layout界面代码(仅部署一个按钮):
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"&
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下载"//真正项目时建议将文本资源统一定义配置在res下的strings.xml中
android:onClick="begin"/&
&/LinearLayout&
Java代码实现(通过线程实现模拟下载进度更新):
public class ProgressBarDemo extends AppCompatActivity {
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressbar);
public void begin(View v) {
//实例化进度条对话框(ProgressDialog)
final ProgressDialog pd = new ProgressDialog(this);
pd.setTitle("请稍等");
//设置对话进度条样式为水平
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置提示信息
pd.setMessage("正在玩命下载中......");
//设置对话进度条显示在屏幕顶部(方便截图)
pd.getWindow().setGravity(Gravity.TOP);
pd.setMax(100);
pd.show();//调用show方法显示进度条对话框
//使用匿名内部类实现线程并启动
new Thread(new Runnable() {
int initial = 0;//初始下载进度
public void run() {
while(initial&pd.getMax()){//设置循环条件
pd.setProgress(initial+=40);//设置每次完成40
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
pd.dismiss();//进度完成时对话框消失
}).start();
以上所述是小编给大家介绍的Android 中通过实现线程更新Progressdialog (对话进度条),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具博客分类:
本文是对网上的文章《Android开发指南-用户界面-对话框》的部分内容进行简化,并加上自己的某些理解。里面的相同内容,版权归原翻译作者所有。
显示对话框
对话框经常作为Activity的一部分来创建和显示。你通常应该从protected Dialog Activity.onCreateDialog (int id) 回调方法里创建对话框。当你使用这个回调函数时,Android系统会有效的设置这个Activity为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。这样,每个对话框继承这个Activity的特定属性。比如,当一个对话框打开时,菜单键显示为这个Activity定义的选项菜单,音量键修改Activity使用的音频流。
注意: 如果你决定在onCreateDialog()方法之外创建一个对话框,它将不会被附着到活动上。不过,你可以通过setOwnerActivity(Activity)把它附着到一个活动上。
当你想要显示一个对话框时,调用showDialog(int id) 方法并传递一个唯一标识这个对话框的整数。
当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。这个回调方法被传以和showDialog(int id)相同的ID。当你创建这个对话框后,在Activity的最后返回这个对象。
在对话框被显示之前,Android还调用了可选的回调函数onPrepareDialog(int id, Dialog). 如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第一次打开时被调用。如果你不定义onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以对话框的ID,和在onCreateDialog()中创建的对话框对象。(个人理解是,在本Activity里第一次show某个Dialog,则先调用onCreateDialog,得到返回的Dialog对象并挂靠在Activity,保存Dialog对象的引用,然后才显示Dialog。这样子,下次再show Dialog就不用重新创建Dialog对象,而是重用旧的)
定义onCreateDialog(int) 和 onPrepareDialog(int, Dialog) 回调函数的最佳方法是使用一个switch 语句来检查传递进来的id 参数。每个case 应该检查一个唯一的对话框ID然后创建和定义相应的对话框。比如,想象一下一个游戏使用两个不同的对话框:一个用来指示这个游戏已经暂停而另一个来指示游戏结束。首先,为每个对话框定义一个常量:
static final int DIALOG_PAUSED_ID = 0;
static final int DIALOG_GAMEOVER_ID = 1;
然后,为每一个ID用一个switch case定义这个onCreateDialog(int) 回调函数:
protected Dialog onCreateDialog(int id) {
switch(id) {
case DIALOG_PAUSED_ID:
case DIALOG_GAMEOVER_ID:
dialog = null;
当是时候显示其中之一的对话框时,使用对话框ID调用showDialog(int):
showDialog(DIALOG_PAUSED_ID);
消除对话框Dismissing a Dialog
当你准备关闭对话框时,你可以通过对这个对话框调用dismiss()来消除它。如果需要,你还可以从这个Activity中调用dismissDialog(int id) 方法,这实际上将为你对这个对话框调用dismiss() 方法。
如果你想使用onCreateDialog(int id) 方法来管理你对话框的状态(就如同在前面的章节讨论的那样),然后每次你的对话框消除的时候,这个对话框对象的状态将由该Activity保留。如果你决定不再需要这个对象或者清除该状态是重要的,那么你应该调用removeDialog(int id)。这将删除任何内部对象引用而且如果这个对话框正在显示,它将被消除。
使用消除侦听器Using dismiss listeners
如果你希望你的应用程序在一个对话框消亡的时候执行一些流程,那么你应该附着一个on-dismiss侦听器到对话框上。
protected void onPrepareDialog(int id, Dialog dialog) {
switch(id){
case PROGRESS_DIALOG:
dialog.setOnDismissListener(new DialogInterface.OnDismissListener(){
public void onDismiss(DialogInterface dialog) {
Toast.makeText(getApplicationContext(),
"dismiss listener!",
Toast.LENGTH_SHORT)
然而, 请注意对话框也可以被“取消”。这是一个表明对话框被用户显示取消的特殊情况。这将在用户按“返回”按钮时发生,或者这个对话框显示的调用cancel() (也许通过对话框上的一个“取消”按钮)。当一个对话框被取消时,这个OnDismissListener 依然会被通知到,但是如果你希望在对话框被显示取消时被通知到(而不是通常的消除方式),那么你应该通过setOnCancelListener()注册一个DialogInterface.OnCancelListener 。
目前个人学习发现,一般情况下,调用dialog.cancel()就会触发onCancelLister。而点击AlertDialog的NegativeButton (Cancel/No)是不会触发的。对于setOnCancelListener()要注意的是,这里有两个setOnCancelListener(),但返回值不同:
public AlertDialog.Builder setOnCancelListener (DialogInterface.OnCancelListener onCancelListener)
public void setOnCancelListener (DialogInterface.OnCancelListener listener)
警告对话框AlertDialog的使用
为了创建一个警告对话框,使用AlertDialog.Builder 子类。通过AlertDialog.Builder(Context)获取一个构造器然后使用这个类的公共方法来定义警告对话框的所有属性。当得到构造器后,通过create().方法来获取警告对话框对象。有时我是不调用create()的,而是在设置好了后直接调用show()显示AlertDialog。
增加按钮Adding buttons
这就是我一开始很想知道的究竟如何添加Yes/No,Ok/Cancel这样的按钮。原来是通过setPositiveButton(...)响应Yes/Ok的点击,setNeutralButton(...)响应中立行为的点击,setNegativeButton(...)响应No/Cancel的点击。注意,只能各自设置一个按钮来响应点击事件。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
AlertDialog alert = builder.create();
首先,为这个对话框添加一个消息setMessage(CharSequence)。然后,开始函数链并设置该对话框为不能取消not cancelable (因此用户不能使用返回按钮关闭这个对话框)。对每个按钮,使用任一set...Button() 方法,比如setPositiveButton(),该方法接受按钮名称以及一个定义用户选中按钮后所采取动作的DialogInterface.OnClickListener。
增加一个列表Adding a list
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
AlertDialog alert = builder.create();
首先,用setTitle(CharSequence)方法给对话框添加一个标题。然后,添加用setItems()添加一个可选项列表,该列表接受一组显示的items和一个DialogInterface.OnClickListener 来定义用户选中按钮后所采取动作。
增加复选框和单选按钮
要在对话框里创建一个多选项列表(checkboxes)或者单选项(radio buttons),可分别调用setMultiChoiceItems() 和setSingleChoiceItems() 方法。如果你在onCreateDialog()回调函数中创建这些可选列表,Android会帮你管理列表状态。只要这个活动是激活的,对话框会记住之前选中的items,但如果用户退出这个活动,用户选择将丢失。
注意: 为了在用户离开或暂停这个活动的时候能够保存选择,你必须通过活动生命期Activity Lifecycle来恰当的保存和恢复设置。为了永久保存选项,即使活动进程被完全终止,你需要使用数据存储Data Storage技术。
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
AlertDialog alert = builder.create();
setSingleChoiceItems() 的第二个参数是一个checkedItem整型数值,指示了基于0的缺省选择项的位置。“-1”代表不会有默认选择项。
进度对话框Progress Dialog的使用
ProgressDialog是AlertDialog类的一个扩展,可以为一个未定义进度的任务显示一个旋转轮形状的进度动画,或者为一个指定进度的任务显示一个进度条。
可以简单地通过调用ProgressDialog.show()方法来显示一个进度对话框,而通过onCreateDialog(int)回调管理这个对话框是可选的,如下所示:
ProgressDialog.show(this,
"Loading. Please wait...",
进度对话框的缺省类型是一个旋转轮,运行看到的是以下效果:
由于ProgressDialog是AlertDialog的扩展类,所以ProgressDialog也能设置按钮,比如一个取消下载的按钮。不过要注意的是,和前面的AlertDialog.Builder不同,ProgressDialog是调用AlertDialog的setButton,setButton2,setButton3函数,这些函数没有明确哪个是正面/中立/负面的,由我们决定。
显示进度条Showing a progress bar
而选择动画进度条显示进度:
用类构造器初始化进度对话框,ProgressDialog(Context)。
用setProgressStyle(int)方法设置进度风格为"STYLE_HORIZONTAL"以及设置其它属性,比如消息。
创建ProgressDialog大概是这样的:
ProgressDialog progressDialog = new ProgressDialog(getApplicationContext());
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setIcon(R.drawable.alert_dialog_icon);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
当你准备显示这个对话框时,调用show()或者从onCreateDialog(int)回调中返回ProgressDialog。
你可以通过调用setProgress(int)设置当前进度百分比或者调用incrementProgressBy(int)方法增加进度值。
官方文档提供了如何在另一线程来跟踪进程进度,让进度值变化。对此可以参考里面的代码。也可以查看后面的文章《》里面的例子,看看如何使用Handler, Message机制!
创建自定义对话框Creating a Custom Dialog
创建自定义对话框,首先要创建一个Layout xml 文件,在此不啰嗦了。然后加载Layout有两种方法,也是非常熟悉的那两种方法:
1. setContentView(int resources id)
2. 利用LayoutInflater加载
官方还提示我们,一般使用Dialog类来创建对话框,是需要setTitle的,不设置的话,标题占用的空间保持为空,但仍然可见。而不想要那个标题,那应该使用警告对话框AlertDialog来创建自定义对话框。然而,因为警告对话框可以很简单的通过AlertDialog.Builder 类来创建,你并不需要访问上面使用的setContentView(int) 方法。相反,你必须使用setView(View),则需要使用LayoutInflater来加载Layout得到View。
具体代码参考
浏览 10070
浏览: 1717991 次
来自: 杭州
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
Maven多模块spring + springMVC + JP ...
博主还有wlsvm.zip这个压缩包吗?链接打不开了Android ProgressDialog进度条对话框的使用:
&?xml version="1.0" encoding="utf-8"?&
&LinearLayout xmlns:android="/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"&
&TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" /&
&Button android:text="圆形进度条" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"&&/Button&
&Button android:text="长型进度条" android:id="@+id/Button02"
android:layout_width="wrap_content" android:layout_height="wrap_content"&&/Button&
&/LinearLayout&
package com.Aina.A
import android.app.A
import android.app.ProgressD
import android.content.DialogI
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
public class Test_ProgressDialog extends Activity {
/** Called when the activity is first created. */
private ProgressDialog mpD
private Button btn1,btn2;
private int mCount = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) this.findViewById(R.id.Button01);
btn2 = (Button) this.findViewById(R.id.Button02);
btn1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mpDialog = new ProgressDialog(Test_ProgressDialog.this);
mpDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置风格为圆形进度条
mpDialog.setTitle("提示");//设置标题
mpDialog.setIcon(R.drawable.icon);//设置图标
mpDialog.setMessage("这是一个圆形进度条");
mpDialog.setIndeterminate(false);//设置进度条是否为不明确
mpDialog.setCancelable(true);//设置进度条是否可以按退回键取消
mpDialog.setButton("确定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
mpDialog.show();
btn2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mCount = 0;
mpDialog = new ProgressDialog(Test_ProgressDialog.this);
mpDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mpDialog.setTitle("提示");
mpDialog.setIcon(R.drawable.icon);
mpDialog.setMessage("这是一个长型进度条");
mpDialog.setMax(100);
mpDialog.setProgress(0);
mpDialog.setSecondaryProgress(50);
mpDialog.setIndeterminate(false);
mpDialog.setCancelable(true);
mpDialog.setButton("取消", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
new Thread(){
public void run(){
while(mCount&=100){
mpDialog.setProgress(mCount++);
Thread.sleep(100);
mpDialog.cancel();
}catch(Exception ex){
mpDialog.cancel();
}.start();
mpDialog.show();
浏览 38550
Aina_hk55HK
浏览: 361737 次
来自: 深圳
学习了。。。。。。。。。
代码有效 谢谢分享!
官方文档的说明“Exception that is throw ...
卡菲牛奶 写道 好像忘记写INTERNET权限喽!哦,写在后面 ...温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(24222)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'ProgressDialog用法',
blogAbstract:'
1.新建Android项目 ProgressDialog&&& 在包andorid.huada下建文件ProgressDialogActivity.java
2.ProgressDialogActivity.java代码如下
& package android.import android.app.Aimport android.app.ProgressDimport android.os.Bimport android.os.Himport android.os.Mpublic class ProgressDialogActivity extends Activity {',
blogTag:'android,progressdialgo',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:7,
publishTime:2,
permalink:'blog/static/',
commentCount:2,
mainCommentCount:2,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 progressdialog进度条 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信