秒表功能

package com.example.lyx2_time;


import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;


public class StopWatchView extends LinearLayout {
     private static final int MSG_WHAT_SHOW_TIME = 1; 
     private Button btnStart,btnResume,btnLap,btnReset,btnPause;
     private TextView tvHour,tvMin,tvSec,tvMSec;
     private Timer timer=new Timer();
     private TimerTask timerTask=null;
     private int tenMSecs = 0;
     private ListView lvTimeList;
     private ArrayAdapter<String> adapter;
private int hour;
private int min;
private int sec;
  private int msec; 
     
public StopWatchView(Context context, AttributeSet attrs) {
super(context, attrs);
}


public StopWatchView(Context context) {
super(context);
}

@Override
protected void onFinishInflate() {
super.onFinishInflate();
btnStart=(Button) findViewById(R.id.btnSWStart);
btnResume=(Button) findViewById(R.id.btnSWResume);
btnReset=(Button) findViewById(R.id.btnSWReset);
btnLap=(Button) findViewById(R.id.btnSWLap);
btnPause=(Button) findViewById(R.id.btnSWPause);

tvHour=(TextView) findViewById(R.id.timeHour);
tvMin=(TextView) findViewById(R.id.timeMin);
tvSec=(TextView) findViewById(R.id.timeSec);
tvMSec=(TextView) findViewById(R.id.timeMSec);

btnStart.setVisibility(View.VISIBLE);
btnPause.setVisibility(View.GONE);
btnResume.setVisibility(View.GONE);
btnReset.setVisibility(View.GONE);
btnLap.setVisibility(View.GONE);

tvHour.setText("0");
tvMin.setText("0");
tvSec.setText("0");
tvMSec.setText("0");

lvTimeList=(ListView) findViewById(R.id.lvWatchTimeList);
adapter=new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1);
lvTimeList.setAdapter(adapter);

btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTimer();
btnStart.setVisibility(View.GONE);
btnPause.setVisibility(View.VISIBLE);
btnResume.setVisibility(View.GONE);
btnReset.setVisibility(View.VISIBLE);
btnLap.setVisibility(View.VISIBLE);
}
});

btnPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
               stopTimer();
btnStart.setVisibility(View.GONE);
btnPause.setVisibility(View.GONE);
btnResume.setVisibility(View.VISIBLE);
btnReset.setVisibility(View.VISIBLE);
btnLap.setVisibility(View.GONE);
}
});

btnResume.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTimer();
btnStart.setVisibility(View.GONE);
btnPause.setVisibility(View.VISIBLE);
btnResume.setVisibility(View.GONE);
btnReset.setVisibility(View.VISIBLE);
btnLap.setVisibility(View.VISIBLE);
}
});

btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tenMSecs = 0;
stopTimer();
adapter.clear();
tvHour.setText("0");
tvMin.setText("0");
tvSec.setText("0");
tvMSec.setText("0");
btnStart.setVisibility(View.VISIBLE);
btnPause.setVisibility(View.GONE);
btnResume.setVisibility(View.GONE);
btnReset.setVisibility(View.GONE);
btnLap.setVisibility(View.GONE);
}
});

btnLap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {


adapter.insert(String.format("%d:%d:%d.%d", hour,min,sec,msec), 0);
}
});
}



private void startTimer(){
if(timerTask==null){
//timerTask在另外一个线程,所以必须用handle来传递数据
timerTask=new TimerTask() {

@Override
public void run() {
tenMSecs++;
                    handler.sendEmptyMessage(MSG_WHAT_SHOW_TIME);
}
};
timer.schedule(timerTask, 10,10);
}
}

private void stopTimer(){
if(timerTask!=null){
timerTask.cancel();
timerTask=null;
}
}

private Handler handler =new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case MSG_WHAT_SHOW_TIME:
    hour=tenMSecs/100/60/60;
    min=(tenMSecs/100/60)%60;
    sec=(tenMSecs/100)%60;
    msec=tenMSecs%100; 


tvHour.setText(hour+" ");
tvMin.setText(min+" ");
tvSec.setText(sec+" ");
tvMSec.setText(msec+" ");
break;


default:
break;
}
};
};


public void onDestroy() {
        timer.cancel();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值