ProgressBar与handler

本文介绍了一种在Android应用中结合使用ProgressBar与Handler的方法来更新UI。通过创建自定义Handler来处理不同事件,并利用线程间通信更新进度条进度及显示当前状态。

handler机制在很多时候都用来跟新UI,这里把ProgressBar与handler混搭,重点来看handler的使用。

public class mProgressBarActivity extends Activity implements OnClickListener { private TextView mTextView01; private Button mButton01; private ProgressBar mProgressBar01; public int intCounter=0; /* 自定义Handler信息代码,用以作为识别事件处理 */ protected static final int GUI_STOP_NOTIFIER = 0x108; protected static final int GUI_THREADING_NOTIFIER = 0x109; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton01 = (Button)findViewById(R.id.myButton1); mTextView01 = (TextView)findViewById(R.id.myTextView1); mProgressBar01 = (ProgressBar)findViewById(R.id.myProgressBar1); mButton01.setOnClickListener(this); } public void onClick(View v) { int viewId = v.getId(); switch (viewId) { case R.id.myButton1: mTextView01.setText(R.string.str_progress_start); mProgressBar01.setVisibility(View.VISIBLE); mProgressBar01.setMax(100); mProgressBar01.setProgress(0); new Thread(new Runnable() { public void run() { for (int i=0;i<10;i++) { try { intCounter = (i+1)*20; Thread.sleep(1000); if(i==4) { Message m = new Message(); m.what = mProgressBarActivity.GUI_STOP_NOTIFIER; mProgressBarActivity.this.myMessageHandler.sendMessage(m); break; } else { Message m = new Message(); m.what = mProgressBarActivity.GUI_THREADING_NOTIFIER; mProgressBarActivity.this.myMessageHandler.sendMessage(m); } } catch(Exception e) { e.printStackTrace(); } } } }).start(); default: break; } } Handler myMessageHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case mProgressBarActivity.GUI_STOP_NOTIFIER: mTextView01.setText(R.string.str_progress_done); mProgressBar01.setVisibility(View.GONE); Thread.currentThread().interrupt(); break; case mProgressBarActivity.GUI_THREADING_NOTIFIER: if(!Thread.currentThread().isInterrupted()) { mProgressBar01.setProgress(intCounter); mTextView01.setText ( getResources().getText(R.string.str_progress_start)+ "("+Integer.toString(intCounter)+"%)\n"+ "Progress:"+ Integer.toString(mProgressBar01.getProgress())+ "\n"+"Indeterminate:"+ Boolean.toString(mProgressBar01.isIndeterminate()) ); } break; } super.handleMessage(msg); } }; }

在写事件监听时候,最有效的编码规范是把:事件的定义和实现分开,让代码看起来醒目了然!

转载于:https://www.cnblogs.com/boyupeng/archive/2011/03/15/2028544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值