原文:http://blog.csdn.net/fwwdn/article/details/7550822

本文利用ContextMenu(上下文菜单),Chronometer实现简单计数器。

Main.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width= "fill_parent"
  5. android:layout_height = "fill_parent"
  6. android:gravity = "center_horizontal"
  7. >
  8. <Chronometer
  9. android:id ="@+id/chronometer"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:format="%s"
  13. android:textSize="80px"
  14. android:textColor="#00FF00"
  15. />
  16. </LinearLayout >

/layout/menu/context_menu.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:id="@+id/timer_start" android:title=" 开始计时 " />
  4. <item android:id="@+id/timer_stop" android:title=" 终止计时 " />
  5. <item android:id="@+id/timer_reset" android:title=" 清零 " />
  6. </menu>

主Activity:

  1. public class MainActivity extends Activity {
  2. private Chronometer timer;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState)
  5. {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.main);
  8. // 获得计时器对象
  9. timer = (Chronometer)this.findViewById(R.id.chronometer);
  10. //长按计时器时,出现上下文菜单
  11. this.registerForContextMenu(timer);
  12. }
  13. //创建上下文菜单
  14. @Override
  15. public void onCreateContextMenu(ContextMenu menu, View v,
  16. ContextMenuInfo menuInfo)
  17. {
  18. super.onCreateContextMenu(menu, v, menuInfo);
  19. // ContextMenu的Item不支持Icon,所以不用再资源文件中,为它们设定图标
  20. if (v.getId() == R.id.chronometer)
  21. {
  22. //加载xml菜单布局文件
  23. this.getMenuInflater().inflate(R.menu.context_menu, menu);
  24. // 设定头部图标
  25. menu.setHeaderIcon(R.drawable.icon);
  26. // 设定头部标题
  27. menu.setHeaderTitle(" 计时器控制选项 ");
  28. }
  29. }
  30. //选择菜单项后的响应
  31. @Override
  32. public boolean onContextItemSelected(MenuItem item)
  33. {
  34. switch (item.getItemId())
  35. {
  36. case R.id.timer_start:
  37. // 将计时器清零
  38. timer.setBase(SystemClock.elapsedRealtime());
  39. //开始计时
  40. timer.start();
  41. break;
  42. case R.id.timer_stop:
  43. //停止计时
  44. timer.stop();
  45. break;
  46. case R.id.timer_reset:
  47. //将计时器清零
  48. timer.setBase(SystemClock.elapsedRealtime());
  49. break;
  50. }
  51. return super.onContextItemSelected(item);
  52. }
  53. }

运行结果如图所示:

Android简单计时器(转)-LMLPHP
长按计时器弹出上下文菜单选择开始计时:

Android简单计时器(转)-LMLPHP

05-23 18:42