用线程发消息给UI更新显示就可以了 public class CntActivity extends Activity { /** Called when the activity is first created. */ TextView tv=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
tv=new TextView(this); setContentView(tv); tv.setText("0"); Handler handle=new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub if(msg.what==1) { tv.setText(msg.arg1+""); } else super.handleMessage(msg); } }; /*开始计时*/ new CRunCount(handle).start();
}
class CRunCount extends Thread{ Handler uiHandle; public CRunCount(Handler handle) { uiHandle=handle; } @Override public void run() { // TODO Auto-generated method stub super.run(); for(int i=0;i<100;i++) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } uiHandle.sendMessage(uiHandle.obtainMessage(1, i, 0)); } } } }
private class MyHandler extends Handler{ @Override public void handleMessage(Message msg){ switch(msg.what){ case 0: text.setText("" + i++); sleep(0,1000); break; case 1: text.setText("" + i--); sleep(1,1000); break; default:break; } }
public void sleep(int what,int delayMillis){ removeMessages(what); sendMessageDelayed(this.obtainMessage(what), delayMillis); } }要用直接调用sleep(0),要倒计时就sleep(1)
{
if(i==0){
break;
}else{
i--;
}
canvas.drawbitmap(bm[i],x,y,paint);
sleep(1000);
}这里的bm[]是图像数组这样应该可以了吧。
public class CntActivity extends Activity {
/** Called when the activity is first created. */
TextView tv=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv=new TextView(this);
setContentView(tv);
tv.setText("0");
Handler handle=new Handler()
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if(msg.what==1)
{
tv.setText(msg.arg1+"");
}
else super.handleMessage(msg);
}
};
/*开始计时*/
new CRunCount(handle).start();
}
class CRunCount extends Thread{
Handler uiHandle;
public CRunCount(Handler handle)
{
uiHandle=handle;
}
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
for(int i=0;i<100;i++)
{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
uiHandle.sendMessage(uiHandle.obtainMessage(1, i, 0));
}
}
}
}
private class MyHandler extends Handler{ @Override
public void handleMessage(Message msg){
switch(msg.what){
case 0:
text.setText("" + i++);
sleep(0,1000);
break;
case 1:
text.setText("" + i--);
sleep(1,1000);
break;
default:break;
}
}
public void sleep(int what,int delayMillis){
removeMessages(what);
sendMessageDelayed(this.obtainMessage(what), delayMillis);
}
}要用直接调用sleep(0),要倒计时就sleep(1)