[安卓初学者实验]使用计时器(Chronometer)实现可暂停的计时器
来源:互联网 发布:开源 数据上报 编辑:程序博客网 时间:2024/05/19 18:38
1.实验要求
新建一个工程,
a.修改布局文件,使其包含一个计时器(Chronometer)和两个按钮(Button)startButton和stopButton分别表示“开始/暂停/继续”和“结束”;整体采用纵向线性布局,两个按钮可采用局部横向线性布局,注意调整位置为居中;
b.修改主Activity中的onCreate方法,为两个按钮分别定义点击响应函数(可模拟原例子进行)。其中,startButton按钮实现三种状态,分别解释如下:
状态0(初始化):显示“开始”,点击一次则开始计时,同时转到状态1;
状态1(计时中):显示“暂停”,点击一次则暂停计时,同时转到状态2;
状态2(暂停中):显示“继续”,点击一次则继续计时,同时转到状态1。
stopButton按钮实现停止计时,同时将startButton转到状态0。
(提示:SystemClock.elapsedRealtime()函数可返回从开始到当前流逝的时间,无论计时器是否停止,故需要记录暂停到继续之间的时间差dt,并在继续计时时将其减去)
2.布局文件
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="开始" /> <Chronometer android:id="@+id/chronometer1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Chronometer" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="停止" /></LinearLayout>
3.onCreate函数
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ch = (Chronometer) findViewById(R.id.chronometer1); start = (Button) findViewById(R.id.button1); start.setOnClickListener(new OnClickListener(){ public void onClick(View source){ if (ctrl==0){ ch.setBase(SystemClock.elapsedRealtime());//初始化时间 ch.start(); start.setText("暂停"); ctrl = 1; } else if( ctrl==1 ){//暂停计时 ch.stop(); dt = SystemClock.elapsedRealtime()- ch.getBase();// 保存这次记录了的时间 ctrl = 2; start.setText("继续"); } else if( ctrl==2 ){//继续计时 ch.setBase(SystemClock.elapsedRealtime() - dt + 1);// 跳过已经记录了的时间 ch.start(); ctrl = 1; start.setText("暂停"); } } }); stop = (Button) findViewById(R.id.button2); stop.setOnClickListener(new OnClickListener(){//停止计时 public void onClick(View source){ ch.stop(); //ch.setBase(SystemClock.elapsedRealtime());//写错了的 ctrl = 0; start.setText("开始"); } }); }
0 0
- [安卓初学者实验]使用计时器(Chronometer)实现可暂停的计时器
- 安卓Chronometer计时器的简单使用
- (亲测)安卓计时器demo+代码+Chronometer的使用
- 关于安卓如何实现计时器chronometer的暂停和继续计时功能
- Chronometer 计时器的实现
- Chronometer 计时器的使用
- 关于Chronometer(计时器)暂停的问题
- 关于Chronometer(计时器)暂停的问题
- 关于Chronometer(计时器)暂停的问题
- Android使用Chronometer实现计时器
- Chronometer实现简单的计时器
- Android计时器Chronometer的使用
- Chronometer实现计时器
- 【Android】使用Chronometer组件实现一个简单的计时器
- chronometer计时器实现暂停功能与初始值为0的功能
- Android关于Chronometer计时器的暂停继续计时
- android 计时器的三种实现(Chronometer、Timer、handler)
- 计时器(Chronometer)
- 想赚大钱,就别太着急!
- 结束了——开始了
- Web_PHP_Curl浅说;
- LeetCode第50.之Pow(x, n)
- android studio 预览时 com/android/util/PropertiesMap
- [安卓初学者实验]使用计时器(Chronometer)实现可暂停的计时器
- 主流开源框架(比如:Xutils)中使用注解的原理
- Ionic安装配置教程
- 1008. Elevator (20)
- 实习杂记(25):MarginStart和MarginLeft
- Java千百问_01基本概念(014)_同步、异步有什么区别
- PCLint error 1566 解决方法
- String为啥为final
- MediaRecoder实现预览画面