为了安抚用户等待的焦急心情,我们用ProgressDialog。它的用法书上有例子,就是:
ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
它的用法一般都是在用intent开启一个新的activity的时候,你直接加上这句话,是达不到你想要的效果的。
你必须这样用:把用intent开启activity的这件事放在一个Runnable对象的run()方法中,然后用handler.post()方法来运行这个线程。
代码如下:
Handler handler = new Handler();
Runnable mTasks = new Runnable() {
public void run() {
Intent intent = new Intent();
intent.setClass(YourClass .this,EditHome.class);
startActivity(intent);
}
};
final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
这样算是达到我们要的效果了,可是,那个ProgressDialog的窗口并没有关闭,所以后面还要加上myDialog.dismiss();
但这样的话,窗口出来就消失,我们又看不到ProgressDialog了...所以,我们要用一个线程来控制窗口消失的时间:
new Thread() {
public void run() {
try{
sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
myDialog.dismiss();
}}.start();
那个sleep的时间是你估算下一个activity显示出来所需要的时间。OK了。
但显然这样做是不科学的。科学的做法是:首先在原avtivity中添加一个关闭Dialog的静态方法:
public static void closeProgressDialog() {
myDialog.dismiss();
}
然后在目标的activity中添加两个成员变量:
private static final int EVENT_TIME_TO_CHANGE_IMAGE = 100;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what){
case EVENT_TIME_TO_CHANGE_IMAGE:
YourPrimaryClass.closeProgressDialog();
break;
}
}};
其中Handler中注册了关闭窗口的条件和关闭动作(调用静态方法)。然后在这个activity的onCreat()方法里的最后面加上发送消息的代码:
Message message = mHandler.obtainMessage(EVENT_TIME_TO_CHANGE_IMAGE);
mHandler.sendMessage(message);
这样就能保证是在目标activity全部显现出来之后关闭那个progressDialog了。
分享到:
相关推荐
Android提高篇之自定义dialog实现processDialog“正在加载”效果、使用Animation实现图片旋转源码。 知识点: 1、使用imageview、textview自定义dialog 2、使用Animation实现图片旋转动画效果 3、通过自定义theme...
Android MediaPlayer使用方法简单介绍
本文实例讲述了Android中Parcel用法。分享给大家供大家参考,具体如下: Android 中Parcel 的使用,他是一个存储基本数据类型和引用数据类型的容器,在andorid 中通过IBinder来绑定数据在进程间传递数据。 Parcel ...
Android智能指针使用方法介绍 Android智能指针使用方法介绍
android descendantFocusability用法简析
NULL 博文链接:https://sunzone.iteye.com/blog/1998091
Android Toast各种使用方法及DEMO
android progressDialog各种用法android progressDialog各种用法android progressDialog各种用法android progressDialog各种用法
android ListView简单用法
里面包含了一个反编译工具,一个查看反编译后的文件工具,一个详细说明文档,可以将一个android的apk文件反编译后查看作者的原代码,由于在代码打包成apk时的编译经过了处理,反编译后的代码不可能恢复到原来的代码...
DEMO实现功能: ...RecyclerView Item之间添加分隔线:垂直与水平方向 RecyclerView 单个与多个Item的添加与删除 RecyclerView Item添加与删除动画效果 ...LayoutManager的使用 详见http://blog.csdn.net/yalinfendou
Android Spinner控件简单使用方法,图片加文字的展示效果
Android AsyncTask用法和异步加载图片通过AsyncTask 从网络上异步加载一张图片
Android中的常用控件及其基本用法 TextView的使用方法 EditText的使用方法 Button的使用方法 Menu的使用方法 RadioGroup和RadioButton
android下JNI使用方法.JNI入门教程等网络资源合集
Android应用源码之ProgressBar 几乎全部的用法
Android HttpUrlConnection使用方法 post and get json.
刚刚做完一个项目,自己总结的Provider用法。
Android 中数据库查询方法query() 中的selectionArgs 的用法
Android RecyclerView滑动列表 ,可横向 纵向布局 。视频播放滑动列表 2列