我想写一个计时器。。。计时器从10开始倒计时,我想让10,9,8.。。。这10个数动态的在TextView里面出现。。但是,,一点思路都没有。。。求高手帮忙。。。谢谢。。。感激不尽。。。。
------解决方案--------------------
首先,要显示的数字是Sting格式,还是图片格式。
第二,用canvas画上去就行。
第三,定义一个int i=10;然后一个简单算法就可以实现
while(true)
{
if(i==0){
break;
}else{
i--;
}
canvas.drawbitmap(bm[i],x,y,paint);
sleep(1000);
}
这里的bm[]是图像数组。。。
这样应该可以了吧。
------解决方案--------------------
用线程发消息给UI更新显示就可以了
- Java code
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)); } } }}
------解决方案--------------------
------解决方案--------------------
- Java code
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); } }