首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android Stopwatch范例

2012-09-04 
android Stopwatch实例Stopwatch 实例package net.baisoft.stopwatchimport java.util.ArrayListimport

android Stopwatch实例

                                         Stopwatch 实例

package net.baisoft.stopwatch;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements Runnable {/** * ?????????? */private long time = 0;/** * ?????? */private long startTime;private Handler handler;/** * ?????????? */private TextView timeView;/** * ?????б?????????? */private ListView listView;/** * ?????? */private Button startButton;/** * ?????? */private Button pauseButton;/** * ????? */private Button markButton;/** * ???e?? */private Button resetButton;/** * ????????? */private List<Long> marks;/** * ???????? * ??????????С?????????????? */private int state = 0;private  static int STATE_RUNNING = 1;private  static int STATE_STOP = 0;private  static int STATE_PAUSE = 2;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //??????????????? ??        readEnvironment();        Toast.makeText(this, "????????", Toast.LENGTH_LONG).show();                //??????        startButton = (Button)findViewById(R.id.start);        startButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {onStartClick(view);}});                //??????        pauseButton = (Button)findViewById(R.id.pause);        pauseButton.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View view) {        onPauseClick(view);        }        });                //?????        markButton = (Button) findViewById(R.id.mark);        markButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {onMarkClick(view);}});                //???e??        resetButton = (Button) findViewById(R.id.reset);        resetButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {onResetClick(view);}});                timeView = (TextView) findViewById(R.id.timeView);        listView = (ListView) findViewById(R.id.ListView01);                //???? handler        handler = new Handler();                // ????????        setButtons();                //??????????        if (state == STATE_STOP){        timeView.setText("Let's Run!");        } else if(state == STATE_PAUSE){        timeView.setText(getFormatTime(time));        }        //????б?        refreshMarkList();    }    /**     * ????????e???????????     */private void setButtons() {switch (state) {case 1://???????????startButton.setVisibility(View.GONE);pauseButton.setVisibility(View.VISIBLE);markButton.setVisibility(View.VISIBLE);resetButton.setVisibility(View.GONE);resetButton.setEnabled(false);break;case 2://????????startButton.setVisibility(View.VISIBLE);pauseButton.setVisibility(View.GONE);markButton.setVisibility(View.GONE);resetButton.setVisibility(View.VISIBLE);resetButton.setEnabled(true);break;case 0://???????startButton.setVisibility(View.VISIBLE);pauseButton.setVisibility(View.GONE);markButton.setVisibility(View.GONE);resetButton.setVisibility(View.VISIBLE);resetButton.setEnabled(false);break;default:break;}}    /**     * ???????     */    @SuppressWarnings("unchecked")private void readEnvironment() {    SharedPreferences sharedPreferences = getSharedPreferences("environment", MODE_PRIVATE);    state = sharedPreferences.getInt("state", STATE_STOP);    startTime = sharedPreferences.getLong("startTime", 0);    time = sharedPreferences.getLong("time", 0);        marks = new ArrayList<Long>();    SharedPreferences sharedPreferencesMarks = getSharedPreferences("marks", MODE_PRIVATE);    Map<String, Long> mapMarks = (Map<String, Long>) sharedPreferencesMarks.getAll();    for (int i = 0; i < mapMarks.size(); i++){    Long mark = mapMarks.get("" + i);    marks.add(mark);    }    }    /**     * ???滷??     */    private void saveEnvironment() {    SharedPreferences sharedPreferences = getSharedPreferences("environment", MODE_PRIVATE);    Editor editor = sharedPreferences.edit();    editor.putInt("state", state);    editor.putLong("time", time);    editor.putLong("startTime", startTime);    editor.commit();        //?????????    SharedPreferences sharedPreferencesMarks = getSharedPreferences("marks", MODE_PRIVATE);    Editor editorMarks = sharedPreferencesMarks.edit();    editorMarks.clear();    for(Long mark : marks){    editorMarks.putLong(""  + marks.indexOf(mark), mark.longValue());    }    editorMarks.commit();    }@Overrideprotected void onPause() {super.onPause();if (state == STATE_RUNNING){//???????????handler.removeCallbacks(this);}}@Overrideprotected void onDestroy() {super.onDestroy();//???滷??saveEnvironment();Toast.makeText(this, "????????????", Toast.LENGTH_LONG).show();}@Overrideprotected void onResume() {super.onResume();if (state == STATE_RUNNING){//???????????handler.post(this);}}/**     * ???????     * @param view     */    protected void onResetClick(View view) {    //?????????    state = STATE_STOP;        //???????    if (state == STATE_RUNNING){//???????????handler.removeCallbacks(this);}        //????????????marks = new ArrayList<Long>();refreshMarkList();//??????????time = 0;timeView.setText(getFormatTime(time));// ????????        setButtons();}    /**     * ??????     * @param view     */protected void onPauseClick(View view) {//???????if (state == STATE_RUNNING){//???????????handler.removeCallbacks(this);}    //??????????state = STATE_PAUSE;// ????????        setButtons();}/**     * ??????     * @param view     */protected void onStartClick(View view) {startTime = new Date().getTime() - time;handler.post(this);//????????????marks = new ArrayList<Long>();//???????????????state = STATE_RUNNING;// ????????        setButtons();}/** * ?????? *  * @param view */protected void onMarkClick(View view) {if(time == 0){return;}// ????????, ????????????marks.add(0, time);//????б?refreshMarkList();}/** * ????б? */private void refreshMarkList() {//???List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();int no = marks.size();//???for(long mark : marks){Map<String, Object> map = new HashMap<String, Object>();map.put("mark", getFormatTime(mark));map.put("no", this.getString(R.string.mark) + no);no--;data.add(map);}String[] from = new String[]{"no","mark"};int[] to = new int[]{R.id.no, R.id.time};SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.item, from, to);listView.setAdapter(simpleAdapter);}@Overridepublic void run() {handler.postDelayed(this, 50);time = new Date().getTime() - startTime;timeView.setText(getFormatTime(time));}/** * ???????????????? *  * @param time * ??? ???? * @return ????????? */private String getFormatTime(long time) {long millisecond = time % 1000;long second = (time / 1000) % 60;long minute = time / 1000 / 60;//?????μ??????λString strMillisecond = "" + (millisecond / 100);//???????λString strSecond = ("00" + second).substring(("00" + second).length() - 2);//???????λString strMinute = ("00" + minute).substring(("00" + minute).length() - 2);return strMinute + ":" + strSecond + ":" + strMillisecond;}}


 

热点排行