秒表计时器adnroid StopWatch ...

每个人都有需要秒表的时候,----但是你却发现秒表不好找,嗯…现在有啦!在线秒表!
秒表,在线秒表,在线倒计时,免费在线秒表,免费flash秒表,大型秒表,秒表计时器,在线倒计时器,免费倒计时器
- 回到主页... :-)
- 秒表全屏。
对会议厅,教室,会议、学校、来说真是棒极了…:-)。
- 用沙漏来记录时间。
- 看着保险丝慢慢失去作用。
- 它一圈一圈记录着时间。
- 免费、全屏在线计算器:-)。 (English)您当前所在位置:
& 仿真秒表 Stopwatch+
仿真秒表 Stopwatch+
投稿by:匿名
来源:威锋网
仿真秒表 Stopwatch+
开发者/开发商
Diesel Puppet
需要 iOS 6.0 或更高版本。
&&?18&&&&&&限时免费
GamesCenter
iTunes链接
  《Stopwatch+》是一款精美的仿真秒表计时工具,工具的UI 设计十分简约精致,打开应用便会进入计时界面,屏幕中间会出现一个逼真的秒表。秒表包含秒针与分针,上方有数字显示的精确时间。应用支持 Lap 计数,即记录多个时刻信息,应用会在中间将每个时刻记录在案并对比最近一个时刻算出间隔时间,将中间时刻菜单下拉便可以浏览历史计时。
这里是《仿真秒表 Stopwatch+》在App Store的专属页面
接下来的应用也很好玩:
发表我的评论
摄影与录像
摄影与录像
摄影与录像
论坛热点资源
威锋网服务旗下栏目:
您现在的位置: >
Android实现的秒表计时器示例
所属栏目:
发布时间:
| 小编:豆豆
本文实例讲述了Android实现的秒表计时器。分享给大家供大家参考,具体如下:package&com.liu.
import&java.util.T
import&java.util.TimerT
import&android.app.A
import&android.app.AlertD
import&android.content.C
import&android.content.DialogI
import&android.content.SharedP
import&android.os.B
import&android.os.H
import&android.os.M
import&android.util.L
import&android.view.KeyE
import&android.view.M
import&android.view.MenuI
import&android.view.V
import&android.widget.ImageB
import&android.widget.TextV
public&class&MyTime&extends&Activity&{
&&private&long&mlCount&=&0;
&&private&long&mlTimerUnit&=&100;
&&private&TextView&tvT
&&private&ImageButton&btnStartP
&&private&ImageButton&btnS
&&private&Timer&timer&=&
&&private&TimerTask&task&=&
&&private&Handler&handler&=&
&&private&Message&msg&=&
&&private&boolean&bIsRunningFlg&=&
&&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.&);
&&&&&&&&&&}
&&&&&&&&&&
&&&&&&&&default:
&&&&&&&&&&
&&&&&&&&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&=&
&&&&&&&&//&btnStartPause.setImageResource(R.drawable.pause);
&&&&&&}&else&{&//&pause
&&&&&&&&try&{
&&&&&&&&&&bIsRunningFlg&=&
&&&&&&&&&&task.cancel();
&&&&&&&&&&task&=&
&&&&&&&&&&timer.cancel();&//&Cancel&timer
&&&&&&&&&&timer.purge();
&&&&&&&&&&timer&=&
&&&&&&&&&&handler.removeMessages(msg.what);
&&&&&&&&&&//&btnStartPause.setImageResource(R.drawable.start);
&&&&&&&&}&catch&(Exception&e)&{
&&&&&&&&&&e.printStackTrace();
&&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&=&
&&&&&&&&timer.cancel();&//&Cancel&timer
&&&&&&&&timer.purge();
&&&&&&&&timer&=&
&&&&&&&&handler.removeMessages(msg.what);
&&&&&&mlCount&=&0;
&&&&&&bIsRunningFlg&=&
&&&&&&//&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);
&&@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&=&
&&&&if&(null&!=&timer)&{
&&&&&&timer.cancel();&//&Cancel&timer
&&&&&&timer.purge();
&&&&&&timer&=&
&&&&&&handler.removeMessages(msg.what);
&&&&bIsRunningFlg&=&
&&&&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¬&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&
&&//&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:
&&&&case&ABOUT_ID:
&&&&&&//&Display&about&dialog
&&&&&&AlertDialog.Builder&builder&=&new&AlertDialog.Builder(this);
&&&&&&builder.setTitle(R.string.app_name)
&&&&&&.setMessage(&本程序由雨梦开发/n联系作者:&)
&&&&&&.setCancelable(true)
&&&&&&.setPositiveButton(&确定&,&new&DialogInterface.OnClickListener()&{
&&&&&&&&public&void&onClick(DialogInterface&dialog,&int&id)&{
&&&&&&&&&&dialog.cancel();
&&&&&&AlertDialog&alert&=&builder.create();
&&&&&&alert.show();
&&&&case&EXIT_ID:
&&&&&&finish();&//&Exit&application
&&&&case&SETTING_SECOND_ID:&//&秒(1000ms)
&&&&&&if&(SETTING_SECOND_ID&!=&settingTimerUnitFlg)&{
&&&&&&&&mlTimerUnit&=&1000;
&&&&&&&&settingTimerUnitFlg&=&SETTING_SECOND_ID;
&&&&&&tvTime.setText(R.string.init_time_second);
&&&&case&SETTING_100MILLISECOND_ID:&//&100毫秒
&&&&&&if&(SETTING_100MILLISECOND_ID&!=&settingTimerUnitFlg)&{
&&&&&&&&mlTimerUnit&=&100;
&&&&&&&&settingTimerUnitFlg&=&SETTING_100MILLISECOND_ID;
&&&&&&tvTime.setText(R.string.init_time_100millisecond);
&&&&default:
&&&&&&Log.i(MYTIMER_TAG,&&Other&menu&item...&);
&&&&//&Save&timer&unit
&&&&&&SharedPreferences&sharedPreferences&=&getSharedPreferences(
&&&&&&&&&&&mytimer_unit&,&Context.MODE_PRIVATE);
&&&&&&SharedPreferences.Editor&editor&=&sharedPreferences.edit();//&获取编辑器
&&&&&&editor.putLong(&time_unit&,&mlTimerUnit);
&&&&&&mit();//&提交修改
&&&&}&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&=&
&&&&&&if&(null&!=&timer)&{
&&&&&&&&timer.cancel();&//&Cancel&timer
&&&&&&&&timer.purge();
&&&&&&&&timer&=&
&&&&&&&&handler.removeMessages(msg.what);
&&&&&&bIsRunningFlg&=&
&&&&&&mlCount&=&0;
&&&&&&//&btnStartPause.setImageResource(R.drawable.start);
&&&&&&return&
&&&&return&super.onKeyDown(keyCode,&event);
}希望本文所述对大家Android程序设计有所帮助。
相关阅读:
看过本文的人还看过
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。

参考资料

 

随机推荐