国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現的秒表計時器示例

2019-12-12 05:41:27
字體:
來源:轉載
供稿:網友

本文實例講述了Android實現的秒表計時器。分享給大家供大家參考,具體如下:

package com.liu.time;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.SharedPreferences;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.ImageButton;import android.widget.TextView;public class MyTime extends Activity {  private long mlCount = 0;  private long mlTimerUnit = 100;  private TextView tvTime;  private ImageButton btnStartPause;  private ImageButton btnStop;  private Timer timer = null;  private TimerTask task = null;  private Handler handler = null;  private Message msg = null;  private boolean bIsRunningFlg = false;  private static final String MYTIMER_TAG = "MYTIMER_LOG";  // menu item  private static final int SETTING_TIMER_UNIT_ID = Menu.FIRST;  private static final int ABOUT_ID = Menu.FIRST + 1;  private static final int EXIT_ID = Menu.FIRST + 2;  private static final int SETTING_SECOND_ID = Menu.FIRST + 101;  private static final int SETTING_100MILLISECOND_ID = Menu.FIRST + 102;  // Setting timer unit flag  private int settingTimerUnitFlg = SETTING_100MILLISECOND_ID;  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    tvTime = (TextView) findViewById(R.id.tvTime);    btnStartPause = (ImageButton) findViewById(R.id.btnStartPaunse);    btnStop = (ImageButton) findViewById(R.id.btnStop);    SharedPreferences sharedPreferences = getSharedPreferences(        "mytimer_unit", Context.MODE_PRIVATE);    // getString()第二個參數為缺省值,如果preference中不存在該key,將返回缺省值    mlTimerUnit = sharedPreferences.getLong("time_unit", 100);    Log.i(MYTIMER_TAG, "mlTimerUnit = " + mlTimerUnit);    if (1000 == mlTimerUnit) {      // second      settingTimerUnitFlg = SETTING_SECOND_ID;      tvTime.setText(R.string.init_time_second);    } else if (100 == mlTimerUnit) {      // 100 millisecond      settingTimerUnitFlg = SETTING_100MILLISECOND_ID;      tvTime.setText(R.string.init_time_100millisecond);    }    // Handle timer message    handler = new Handler() {      @Override      public void handleMessage(Message msg) {        // TODO Auto-generated method stub        switch (msg.what) {        case 1:          mlCount++;          int totalSec = 0;          int yushu = 0;          if (SETTING_SECOND_ID == settingTimerUnitFlg) {            // second            totalSec = (int) (mlCount);          } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) {            // 100 millisecond            totalSec = (int) (mlCount / 10);            yushu = (int) (mlCount % 10);          }          // Set time display          int min = (totalSec / 60);          int sec = (totalSec % 60);          try {            if (SETTING_SECOND_ID == settingTimerUnitFlg) {              // second(1000ms)              tvTime.setText(String.format("%1$02d:%2$02d", min,                  sec));            } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) {              // 100 millisecond              tvTime.setText(String.format("%1$02d:%2$02d:%3$d",                  min, sec, yushu));            }          } catch (Exception e) {            tvTime.setText("" + min + ":" + sec + ":" + yushu);            e.printStackTrace();            Log.e("MyTimer onCreate", "Format string error.");          }          break;        default:          break;        }        super.handleMessage(msg);      }    };    btnStartPause.setOnClickListener(startPauseListener);    btnStop.setOnClickListener(stopListener);  }  // Start and pause  View.OnClickListener startPauseListener = new View.OnClickListener() {    @Override    public void onClick(View v) {      // TODO Auto-generated method stub      Log.i(MYTIMER_TAG, "Start/Pause is clicked.");      if (null == timer) {        if (null == task) {          task = new TimerTask() {            @Override            public void run() {              // TODO Auto-generated method stub              if (null == msg) {                msg = new Message();              } else {                msg = Message.obtain();              }              msg.what = 1;              handler.sendMessage(msg);            }          };        }        timer = new Timer(true);        timer.schedule(task, mlTimerUnit, mlTimerUnit); // set timer      // duration      }      // start      if (!bIsRunningFlg) {        bIsRunningFlg = true;        // btnStartPause.setImageResource(R.drawable.pause);      } else { // pause        try {          bIsRunningFlg = false;          task.cancel();          task = null;          timer.cancel(); // Cancel timer          timer.purge();          timer = null;          handler.removeMessages(msg.what);          // btnStartPause.setImageResource(R.drawable.start);        } catch (Exception e) {          e.printStackTrace();        }      }    }  };  // Stop  View.OnClickListener stopListener = new View.OnClickListener() {    @Override    public void onClick(View v) {      // TODO Auto-generated method stub      Log.i(MYTIMER_TAG, "Stop is clicked.");      if (null != timer) {        task.cancel();        task = null;        timer.cancel(); // Cancel timer        timer.purge();        timer = null;        handler.removeMessages(msg.what);      }      mlCount = 0;      bIsRunningFlg = false;      // btnStartPause.setImageResource(R.drawable.start);      if (SETTING_SECOND_ID == settingTimerUnitFlg) {        // second        tvTime.setText(R.string.init_time_second);      } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) {        // 100 millisecond        tvTime.setText(R.string.init_time_100millisecond);      }    }  };  // Menu  @Override  public boolean onCreateOptionsMenu(android.view.Menu menu) {    // TODO Auto-generated method stub    super.onCreateOptionsMenu(menu);    Log.i(MYTIMER_TAG, "Menu is created.");    // Stop timer    if (null != task) {      task.cancel();      task = null;    }    if (null != timer) {      timer.cancel(); // Cancel timer      timer.purge();      timer = null;      handler.removeMessages(msg.what);    }    bIsRunningFlg = false;    mlCount = 0;    // btnStartPause.setImageResource(R.drawable.start);    // 設置子菜單的名稱    // SubMenu settingMenu = menu.addSubMenu(0, SETTING_TIMER_UNIT_ID, 0,    // R.string.menu_setting_timer_unit).setIcon(R.drawable.setting);    // 按對應的名稱增加子菜單    // Sub menus do not support item icons, or nested sub menus.    // settingMenu.add(1, SETTING_SECOND_ID, 0,    // R.string.menu_setting_second);    // settingMenu.add(1, SETTING_100MILLISECOND_ID, 1,    // R.string.menu_setting_100milisec);    // About    // menu.add(0, ABOUT_ID, 1,    // R.string.menu_about).setIcon(R.drawable.about);    // 退出    // menu.add(0, EXIT_ID, 2, R.string.menu_exit).setIcon(R.drawable.exit);    return true;  }  // Menu item  @Override  public boolean onOptionsItemSelected(MenuItem item) {    // TODO Auto-generated method stub    Log.i(MYTIMER_TAG, "Menu item is selected.");    switch (item.getItemId()) {    case SETTING_TIMER_UNIT_ID:      break;    case ABOUT_ID:      // Display about dialog      AlertDialog.Builder builder = new AlertDialog.Builder(this);      builder.setTitle(R.string.app_name)      .setMessage("本程序由雨夢開發/n聯系作者:minyugong@163.com")      .setCancelable(true)      .setPositiveButton("確定", new DialogInterface.OnClickListener() {        public void onClick(DialogInterface dialog, int id) {          dialog.cancel();        }      });      AlertDialog alert = builder.create();      alert.show();      break;    case EXIT_ID:      finish(); // Exit application      break;    case SETTING_SECOND_ID: // 秒(1000ms)      if (SETTING_SECOND_ID != settingTimerUnitFlg) {        mlTimerUnit = 1000;        settingTimerUnitFlg = SETTING_SECOND_ID;      }      tvTime.setText(R.string.init_time_second);      break;    case SETTING_100MILLISECOND_ID: // 100毫秒      if (SETTING_100MILLISECOND_ID != settingTimerUnitFlg) {        mlTimerUnit = 100;        settingTimerUnitFlg = SETTING_100MILLISECOND_ID;      }      tvTime.setText(R.string.init_time_100millisecond);      break;    default:      Log.i(MYTIMER_TAG, "Other menu item...");      break;    }    // Save timer unit    try {      SharedPreferences sharedPreferences = getSharedPreferences(          "mytimer_unit", Context.MODE_PRIVATE);      SharedPreferences.Editor editor = sharedPreferences.edit();// 獲取編輯器      editor.putLong("time_unit", mlTimerUnit);      editor.commit();// 提交修改    } catch (Exception e) {      e.printStackTrace();      Log.e(MYTIMER_TAG, "save timer unit error.");    }    return super.onOptionsItemSelected(item);  }  @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {    // TODO Auto-generated method stub    if (KeyEvent.KEYCODE_MENU == keyCode) {      super.openOptionsMenu(); // 調用這個,就可以彈出菜單      Log.i(MYTIMER_TAG, "Menu key is clicked.");      // Stop timer      if (null != task) {        task.cancel();        task = null;      }      if (null != timer) {        timer.cancel(); // Cancel timer        timer.purge();        timer = null;        handler.removeMessages(msg.what);      }      bIsRunningFlg = false;      mlCount = 0;      // btnStartPause.setImageResource(R.drawable.start);      return true;    }    return super.onKeyDown(keyCode, event);  }}

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android日期與時間操作技巧總結》、《Android調試技巧與常見問題解決方法匯總》、《Android開發入門與進階教程》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 章丘市| 兴和县| 汾阳市| 吉隆县| 司法| 工布江达县| 年辖:市辖区| 景洪市| 资阳市| 乌审旗| 安吉县| 水城县| 清徐县| 青浦区| 芜湖市| 扶沟县| 邢台市| 本溪| 油尖旺区| 开平市| 武强县| 南川市| 安义县| 临汾市| 高州市| 云浮市| 循化| 九台市| 五指山市| 类乌齐县| 高淳县| 游戏| 伊宁市| 治多县| 揭阳市| 博爱县| 栾城县| 辽源市| 崇义县| 年辖:市辖区| 芦溪县|