[安卓初学者实验]使用计时器(Chronometer)实现可暂停的计时器

1.实验要求

新建一个工程,

a.修改布局文件,使其包含一个计时器(Chronometer)和两个按钮(Button)startButton和stopButton分别表示“开始/暂停/继续”和“结束”;整体采用纵向线性布局,两个按钮可采用局部横向线性布局,注意调整位置为居中;

b.修改主Activity中的onCreate方法,为两个按钮分别定义点击响应函数(可模拟原例子进行)。其中,startButton按钮实现三种状态,分别解释如下:

状态0(初始化):显示“开始”,点击一次则开始计时,同时转到状态1;

状态1(计时中):显示“暂停”,点击一次则暂停计时,同时转到状态2;

状态2(暂停中):显示“继续”,点击一次则继续计时,同时转到状态1。

stopButton按钮实现停止计时,同时将startButton转到状态0。

(提示:SystemClock.elapsedRealtime()函数可返回从开始到当前流逝的时间,无论计时器是否停止,故需要记录暂停到继续之间的时间差dt,并在继续计时时将其减去)


2.布局文件



        

3.onCreate函数

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ch = (Chronometer) findViewById(R.id.chronometer1);
        start = (Button) findViewById(R.id.button1);
        start.setOnClickListener(new OnClickListener(){
        	public void onClick(View source){
        		if (ctrl==0){														       	ch.setBase(SystemClock.elapsedRealtime());							//初始化时间
        		ch.start();
        		start.setText("暂停");
        		ctrl = 1;
        		}
        		else if( ctrl==1 ){													//暂停计时
        			ch.stop();    
        			dt = SystemClock.elapsedRealtime()- ch.getBase();	// 保存这次记录了的时间
        			ctrl = 2;
        			start.setText("继续"); 
        		}
        		else if( ctrl==2 ){													//继续计时
        			ch.setBase(SystemClock.elapsedRealtime() - dt + 1);	// 跳过已经记录了的时间
        			ch.start();
        			ctrl = 1;
        			start.setText("暂停");
        		}
        		
        	}
        });
                
        stop = (Button) findViewById(R.id.button2);
        stop.setOnClickListener(new OnClickListener(){								//停止计时
        	public void onClick(View source){
        		ch.stop();
        		//ch.setBase(SystemClock.elapsedRealtime());						//写错了的			
        		ctrl = 0;
        		start.setText("开始");
        	}
        });
    } 


你可能感兴趣的:(安卓课程实验)