android应用与服务器交互时的进度对话框ProgressDialog

  以前研究与服务器交互时的进度对话框ProgressDialog在网上看得一些例子总是给我这个新手弄的云里雾里的,这么个简单的东西有点写的很复杂,有的逻辑不明确,今天我写了一个给新手们借鉴一下,以免走更多的弯路。

  废话不多说了,先上图,最讨厌没图了。



下面看看实现代码:

package com.example.progressdialogdemo;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

/**
 * 
 * @author easy
 * progressdialogdemo
 * 
 */
public class MainActivity extends Activity {
	private Boolean isNetError=true;
	/** 模拟获取返回的 **/
	private String canshu1;
	/** 这是你的进度条 **/
	private ProgressDialog proDialog;
	/** 这是用于登录成功之后的事件 这里是在本界面显示登录返回的信息 **/
	private TextView textView1;
	private Button button1;
	/** 这是模拟服务器返回登录后的参数,例如json **/
	private EditText editText1;
	/** new 一个 Handler,这里是要写在onCreate前面 **/
	Handler loginHandler = new Handler() {
		//得到传递过来的message
		public void handleMessage(Message msg) {
			isNetError = msg.getData().getBoolean("isNetError");
			canshu1 = msg.getData().getString("canshu1");
			
			if (isNetError&&canshu1.equals("admin")) {
				Toast.makeText(MainActivity.this, "登录成功:admin",
						Toast.LENGTH_SHORT).show();
				textView1.invalidate();
				textView1.setText("登录成功:admin");
			}else{
				Toast.makeText(MainActivity.this, "出错了,请输入admin",
						Toast.LENGTH_SHORT).show();
				textView1.invalidate();
				textView1.setText("登录出错了");
			}
			
		}
	};
	
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText1 = (EditText) findViewById(R.id.editText1);
        textView1 = (TextView) findViewById(R.id.textView1);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//调用 LoginDialog 方法
				 LoginDialog();
			}
        	
        });
       
    }
    /** 进度条,自己可以定义 **/
	private void LoginDialog() {
		proDialog = ProgressDialog.show(MainActivity.this, "连接中..",
				"连接中..请稍后....", true, true);
		// 开一个线程进行登录验证
		Thread loginThread = new Thread(new LoginFailureHandler());
		loginThread.start();
		
	}
	/** 登录时调用的Runnable **/
    public class LoginFailureHandler implements Runnable {

    	@Override
		public void run() {
    		//这里模拟登录时间延时,可换成登录请求验证什么的
    		try {
    	        Thread.sleep(2000);//括号里面的2000代表2000毫秒,也就是2秒,可以该成你需要的时间
    	        canshu1 = editText1.getText().toString();
    		} catch (InterruptedException e) {
    	        e.printStackTrace();
    		}
    		//这里写获取到参数之后东西并存在Bundle里面
    		if(isNetError){
			Message message = new Message();
			Bundle bundle = new Bundle();
			bundle.putBoolean("isNetError", isNetError);
			bundle.putString("canshu1", canshu1);
			//封装到message里面给Handler发送过去
			message.setData(bundle);
			loginHandler.sendMessage(message);
			//loginHandler处理完毕取消进度条
			proDialog.dismiss();
		}
		}
    }
}

上面都有注释,是不是很简单,你学会了吗?


想要源码的话,在这里下载,不要分

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值