我们做的很多应用程序,很多功能都需要较长的加载时间,比如下载功能,转换页面等等。在程序进行后台处理的时候,前台的ui是没有反应的。如果在这段时间内我们不作任何处理就让程序停在那的话。第一,用户体验会很差。第二,如果用户在这段时间内不耐烦开始对界面猛点(我相信长时间程序没响应大家都会这么做),那么很可能使程序挂掉。所以我们需要在程序加载时弹出加载对话框,解决以上两个问题。
先给大家看一下效果图:
显示最新帖子界面:
点击最热按钮,跳转到显示最热帖子页面,在加载时弹出加载对话框:
加载完毕后,变成了最热页面:
好的,我们一步一步来,首先,那个加载对话框的实现其实是有一个类,叫做ProgressDialog,要显示对话框在程序中,只需用下面这段代码。
progressdialog=ProgressDialog.show(HTTPRequestActivity.this, "Loading...", "Please wait...",true,false);
这当中progressdialog是一个ProgressDialog的对象,show的参数依次为上下文,Dialog要显示的标题,Dialog显示的信息,第三个参数确定进度条是否为不确定,第四个确定是否可以被取消。至于你还想要设置它的其他属性,可以去查一下文档,里面有很多设置属性的函数,你可以通过这些函数把对话框改成你想要的样子。
然后我们要解决的一个问题就是如何在程序加载成功之后让对话框消失,显示新的页面内容。
代码如下:
Handler dialoghandle=new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
progressdialog.dismiss();
}
};
首先定义一个Handler对象,重载其handlemessage方法,在这里面让ProgressDialog消失。
下面我以“最热”按钮为例,“最新”按钮和其基本一致。
hotest.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method
newest.setClickable(true);
hotest.setClickable(false);
progressdialog=ProgressDialog.show(HTTPRequestActivity.this, "Loading...", "Please wait...",true,false);
seturl("http://www.bling0.com/all/hottest/day.json");
new Thread(){
public void run(){
CallWebService(geturl());
listadapter=new SimpleAdapter(HTTPRequestActivity.this,Hotlist ,R.layout.user,new String[]{"title","group","photo","username"},new int []{R.id.title,R.id.group,R.id.photo,R.id.username});
dialoghandle.post(new Runnable(){
public void run()
{
setListAdapter(listadapter);
dialoghandle.sendEmptyMessage(0);
}
});
}
}.start();
}
});
}
在点击按钮后,先让加载对话框出现。然后再调用handler对象的post方法向ui线程发送一个消息,里面有刷新列表和让对话框消失的操作,这样,程序一加载完毕,与此同时ui也会发生变化。
- 大小: 63.4 KB
分享到:
相关推荐
JQuery实战视频教程_页面加载时弹出一个对话框,值得一看
将以下代码置于head标签中即可实现加载时弹出对话框的效果,感兴趣的朋友可以参考下哈,希望可以帮助到你
实现了一个弹出对话框的com组件,在vs中用c++调用
NULL 博文链接:https://lishuaishuai.iteye.com/blog/1267230
silverlight 多种自定义弹出对话框, 1.解决多个弹出窗口时遮罩层重复问题,现在多个弹出窗口将共用一个遮罩层 2.解决多个弹出窗口中有一个窗口为模式对话框的情况下,关闭此模式对话框将不会取消模式遮罩层的问题 3...
Android开发时,有时候需要在底部弹出对话框,该项目实现了这一功能。 实现时,需要在styles.xml中添加自定义风格属性,对话框进入时和出去时分别加载不同的动画资源文件
基于jQuery的弹出警告对话框美化插件(警告,确认和提示) 这个Jquery插件的目的是替代JavaScript的标准函数alert(),confirm(),和 prompt()。这个插件有 如下这些特点: 1:这个插件可以使你可以...
在移动app中,当进行比较耗时的操作时,弹出一个加载的对话框,提示用户正在加载内容,不然用户以为应用卡死就惨了。本案例是我们自定义的ProgressDialog加载对话框,因为系统自带的比较难看,代码已经封装好了,也...
打开控制面板,点击添加/删除程序,再点击添加/删除Windows组件,弹出对话框:无法加载安装程序koc.dll,或是找不到函数KOCSetupProc。请与系统管理员联系。特定错误码是0x7e.单击确定后说无法初始话程序。
加载网页弹出层密码修改
这是一个非常酷的弹出对话框程序,用于网页设计中,在弹出对话框时,他会让原来的页面以半透明状显示,然后,在同一页面中弹出一个新的对话框,在其中使用AJAX动态加载网页,或者图片等等。包含完整的使用例子和说明...
感觉简单来说,dialog就是一个弹出的window,把自己定义的布局放置到window里面就可以了,加载对话框就是有个加载的动画,核心的地方就是实现这个动画,所所以方法 可以有,对图片添加动画,或者使用progressbar。...
MiniDialog 的原始开发版程序采用基于 es6 标准的 JavaScript 编写,如果需要兼容 IE11 浏览器,需要将其转换成 es5 格式,作者已提供了经过 Babel 转换之后的程序,请前往 dist 目录下查看,该目录下的三个文件分别...
一个简易的弹出框的框架,可以实现各种弹出层。
PE文件自动添加节区,并弹出一个简单的对话框(可以自己修改成其它的东西) PE文件自动添加节区,并弹出一个简单的对话框(可以自己修改成其它的东西)
弹出对话框,加载中对话框,popwindow对话框,输入金额对话框
打开时出现需要登录的对话框
MFC模态与非模态对话框的创建、加载位图、绘画等应用
下载后打开,如果你的excel是2007版则会在加载项里出现Custmization 下拉框,如果是2003版,则直接在菜单栏里多出一个Customization下拉框,下拉框里包含三个按钮,其中一个有弹出注册窗体的功能。要实现更强大的...