Android_UI_中常用的两种ProgressDialog
Android_UI_中常用的两种ProgressDialog
Android_UI_中常用的两种ProgressDialog,当手机跟服务器进行数据交互的时候,我们不能把耗时的操作放在主线程中,要做的事情就是异步.而要异步,我们也要在界面上反馈一个信息给用户,让用户知道应该等待数据下载....
先看两张图,这就是最常用的异步弹出窗口了
免费下载地址在 http://linux.bkjia.com/
用户名与密码都是www.bkjia.com
具体下载目录在 /pub/Android源码集锦/2011年/12月/Android_UI_中常用的两种ProgressDialog/
上代码吧 都比较简单,关于线程,看了比较多的建议...不管是线程也好还是其他什么都好,android是一个手机客户端,
大家在写代码的同时还是非常有必要针对内存优化,代码健壮做一些相应上的代码优化的.
比如 少用new的关键字,对象多复用..等等.我再这里就不叙述了,我个人也不是非常的强悍
- package tree.love.UI.Demo.ProgressDialog.activity;
- import tree.love.UI.Demo.ProgressDialog.R;
- import android.app.Activity;
- import android.app.ProgressDialog;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.view.View.OnClickListener;
- public class HomeActivity extends Activity implements OnClickListener
- {
- private ProgressDialog loadingDialog = null;
- /** 第一种风格 **/
- private static final int LOADING_STYLE_01 = 1 ;
- /** 第二种风格 **/
- private static final int LOADING_STYLE_02 = 2 ;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- findViewById(R.id.button).setOnClickListener(this);
- findViewById(R.id.button1).setOnClickListener(this);
- }
- @Override
- public void onClick(View v)
- {
- switch (v.getId())
- {
- case R.id.button://按钮1
- loadingDialog = PrintAlertUtil.showDialog(this, "正在下載...");
- Thread thread01 = new Thread(new Runnable() {
- @Override
- public void run()
- {
- downLoad(5,false);
- }
- });
- thread01.start();
- break;
- case R.id.button1://按钮2
- loadingDialog = PrintAlertUtil.showDialog(this, "正在更新", 100);
- Thread thread02 = new Thread(new Runnable() {
- @Override
- public void run()
- {
- downLoad(10,true);
- }
- });
- thread02.start();
- break;
- }
- }
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg)
- {
- super.handleMessage(msg);
- switch (msg.what)
- {
- case LOADING_STYLE_01:
- //关闭对话框
- PrintAlertUtil.dismissDialog(loadingDialog);
- //提示
- PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());
- break;
- case LOADING_STYLE_02:
- int p = msg.getData().getInt("percent");
- if (p == 100)
- {
- //更新完成,关闭对话框
- loadingDialog.setProgress(p);
- PrintAlertUtil.dismissDialog(loadingDialog);
- PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());
- }
- else
- {
- //更新进度条
- loadingDialog.setProgress(p);
- }
- break;
- }
- }
- };
- /**
- * 模擬下載操作
- */
- public void downLoad(int number,boolean download)
- {
- for (int i = 0; i < number; i++)
- {
- /** 每次模拟停顿耗时0.5秒 **/
- try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}
- if (download)
- {
- /** 每循环一次更新一次进度 **/
- int percent = (i+1)*10;
- Message message = new Message();
- Bundle bundle = message.getData();
- bundle.putInt("percent", percent);
- message.setData(bundle);
- message.what = LOADING_STYLE_02;
- if (i == 9)
- {
- message.obj="更新完毕";
- }
- mHandler.sendMessage(message);
- }
- }
- if (!download)
- {
- Message message = new Message();
- message.what = LOADING_STYLE_01;
- message.obj = "下载完成";
- mHandler.sendMessage(message);
- }
- }
- }
|
评论暂时关闭