一个好的应用应该是对用户做出的任何动作都做出响应,如当用户请求登陆请求时,应该弹出正在加载中的对话框让用户知道应用正在请求中,实现的方式是用Thread+ProgressDialog,通过Handler来通知加载完成。实现过程比较简单我就不多说了,先看效果图:
?
不描述,直接代码,代码是拼凑,主要是想说明过程。
[Copy]View Code JAVA1
?
public class LoginActivity extends Activity{
?
? ? public ProgressDialog loadingDialog;
?
? ? @Override
? ? public void onCreate(Bundle savedInstanceState){
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.main);
?
? ? ? ? loginThread("test", "test");
? ? }
?
? ? /**
? ? * 开始启动加载对话框
? ? */
? ? public void loading(Activity act){
? ? ? ? Log.d(Config.LOG_TAG, "Starting loading");
? ? ? ? loadingDialog = new ProgressDialog(act);
? ? ? ? loadingDialog.setTitle("正在加载数据...");
? ? ? ? loadingDialog.setMessage("请稍等...");
? ? ? ? loadingDialog.show();
? ? }
?
? ? /**
? ? * 结束加载对话框
? ? */
? ? public void stopLoading(){
? ? ? ? Log.d(Config.LOG_TAG, "Stop loading");
? ? ? ? if(loadingDialog != null){
? ? ? ? ? ? loadingDialog.dismiss();
? ? ? ? }
? ? }
?
? ? /**
? ? * 开始登陆检查线程
? ? */
? ? public void loginThread(final String uname, final String upwd){
? ? ? ? Common.loading(this); //开始加载
?
? ? ? ? Thread t = new Thread(new Runnable() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? //get方式传密码是不好的做法
? ? ? ? ? ? ? ? String url = String.format("http://www.hcent.com/login/%s/%s", uname, upwd);
? ? ? ? ? ? ? ? String data = NetWork.getHttpData(url);
?
? ? ? ? ? ? ? ? //加载完成,发送消息
? ? ? ? ? ? ? ? Message msg = loadHandle.obtainMessage(StatusConfig.LOADING_OVER);
? ? ? ? ? ? ? ? Bundle bu = new Bundle();
? ? ? ? ? ? ? ? bu.putString("data", data);
? ? ? ? ? ? ? ? msg.setData(bu);
? ? ? ? ? ? ? ? loadHandle.sendMessage(msg);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? t.start();
? ? }
?
? ? /**
? ? * 消息通知句柄
? ? */
? ? public Handler loadHandle = new Handler(){
? ? ? ? @Override
? ? ? ? public void handleMessage(Message msg){
? ? ? ? ? ? if(msg.what == StatusConfig.LOADING_OVER){ //加载完成
? ? ? ? ? ? ? ? if(msg.getData().getString("data").equals("1")){ //登陆成功
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? Common.stopLoading();
? ? ? ? }
? ? };
}
上一篇: Seekbar+ViewFlipper实现切屏效果下一篇: SurfaceView实现闪烁星星效果图
此内容引自大愚微博,原文地址:http://www.mjix.com/archives/957.html
?