返回顶部
首页 > 资讯 > 移动开发 >Android实现的秒表计时器示例
  • 193
分享到

Android实现的秒表计时器示例

秒表计时器示例秒表计时器Android 2022-06-06 07:06:35 193人浏览 泡泡鱼
摘要

本文实例讲述了Android实现的秒表计时器。分享给大家供大家参考,具体如下: package com.liu.time; import java.util.Timer; i

本文实例讲述了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;
  
  @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程序设计有所帮助。

您可能感兴趣的文章:android之计时器(Chronometer)的使用以及常用的方法Android时分秒计时器的两种实现方法Android 编程下的计时器代码Android计时器的三种实现方式(Chronometer、Timer、handler)Android编程之简单计时器实现方法Android中CountDownTimer倒计时器用法实例Android Chronometer控件实现计时器函数详解Android计时器chronometer使用实例讲解Android开发实现的计时器功能示例


--结束END--

本文标题: Android实现的秒表计时器示例

本文链接: https://lsjlt.com/news/24301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android实现的秒表计时器示例
    本文实例讲述了Android实现的秒表计时器。分享给大家供大家参考,具体如下: package com.liu.time; import java.util.Timer; i...
    99+
    2022-06-06
    秒表计时器 示例 秒表 计时器 Android
  • android秒表计时器怎么实现
    要实现一个Android秒表计时器,可以通过以下步骤实现:1. 创建一个新的Android项目,并在布局文件中添加一个TextVie...
    99+
    2023-08-17
    android
  • java秒表计时器怎么实现
    在Java中,可以使用`System.currentTimeMillis()`方法来实现秒表计时器。以下是一个简单的示例代码:```...
    99+
    2023-08-29
    java
  • Android时分秒计时器的两种实现方法
    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器。这个东西其实实现起来非常简单。 只需要用一个控件Chronometer,是的,...
    99+
    2022-06-06
    方法 计时器 Android
  • js如何实现秒表计时器功能
    这篇文章主要介绍了js如何实现秒表计时器功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。效果图: 下面贴代码:<!DOCT...
    99+
    2024-04-02
  • Android 实现抢购倒计时功能的示例
    目录一、效果图二、思路三、实现步骤:1、时间转换的工具类2、时间倒计时工具类3、布局文件4、倒计时显示处理5、开始倒计时一、效果图 二、思路 算多少秒,秒数取余60,(满足分后...
    99+
    2024-04-02
  • Android实现倒计时的按钮的示例代码
    最近有人问我如何实现倒计时的按钮功能,例如发送验证码,我记得有个CountDownTimer,因为好久没用过了,自己就写了一个,代码如下 new CountDownTime...
    99+
    2022-06-06
    倒计时 示例 按钮 Android
  • C++算法计时器的实现示例
    目录1.毫秒级精度1.1 CLOCKS_PER_SEC1.2 GetTickCount()函数 (Windows API)1.3 timeGetTime()函数(Windows AP...
    99+
    2024-04-02
  • Android实现秒表功能
    本文实例为大家分享了Android实现秒表功能的具体代码,供大家参考,具体内容如下 设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新 activity_main.xml...
    99+
    2024-04-02
  • Unity计时器功能实现示例
    目录Demo展示介绍计时器功能Unity计时器 Demo展示 介绍 游戏中有非常多的计时功能,比如:各种cd,以及需要延时调用的方法; 一般实现有一下几种方式: 1.手动计时 ...
    99+
    2024-04-02
  • Android自定义Chronometer实现短信验证码秒表倒计时功能
    本文实例为大家分享了Chronometer实现倒计时功能,Android提供了实现按照秒计时的API,供大家参考,具体内容如下 一、自定义ChronometerView 继续自...
    99+
    2022-06-06
    倒计时 验证码 秒表 短信验证码 Android
  • Android冷启动实现app秒开的示例分析
    这篇文章将为大家详细讲解有关Android冷启动实现app秒开的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:AndroidManifest里对应activity添加属性android:...
    99+
    2023-05-30
    android app
  • Android实现APP秒表功能
    本文实例为大家分享了Android实现APP秒表功能的具体代码,供大家参考,具体内容如下 这几天一直在看安卓,也正好赶上老师布置的作业,所以就做了一个秒表。自己参考了一下别人的图标,...
    99+
    2024-04-02
  • QT设计秒表功能(跑步计时器)
    本文实例为大家分享了QT设计秒表功能的具体代码,供大家参考,具体内容如下 设计目标 1. 定时器开始 2.复位从0开始计时 3.记录--把记录的时间添加到QTextBrowser, ...
    99+
    2022-11-13
    QT 秒表
  • Android实现实时通信示例
    我们今天来聊下如何做实时通讯(先给知识点,实现原理,最后给出实现实时通信的具体代码--使用工具 android studio) 现在先说下用到的知识点: java的sock...
    99+
    2022-06-06
    示例 通信 Android
  • 基于实现Qt秒表设计
    基于Qt秒表设计 这个只是虚拟机下的Dialog中设计的秒表,大家感兴趣的可以根据自己手机的秒表界面来设计,亦或是有别的想法也可以在ui中添加函数,或者是在ui界面自己添加调整。本篇...
    99+
    2022-11-13
    Qt 秒表
  • Qt实现简易秒表设计
    Qt–简易秒表设计(QTimer,Qtime,TableWiget应用),供大家参考,具体内容如下 效果图 使用QTimer和QTime两个类 思路: 1.计时功能:​...
    99+
    2022-11-13
    Qt 秒表
  • Qt实现简易计时器的示例代码
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 mainwindow.h头文件4.2 mainwindow.cpp源文件五、效果演示一、项目介绍 计时器实现四个...
    99+
    2024-04-02
  • android计时器,时间计算器的实现方法
    需求:默认为"00:00:00",点击开始按钮时清零后开始计时,出现如10:28:34。点击停止的时候停止计时。问题:使用Calendar DateFormat的方法,不设置时...
    99+
    2022-06-06
    方法 时间计算 Android
  • android倒计时控件示例
    本文为大家分享了android倒计时控件,供大家参考,具体代码如下 package com.ly.sxh.view; import android.content.Cont...
    99+
    2022-06-06
    示例 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作