• 计时器


           Android提供了一个计时器组件:Chronometer,该组件与DigitalClock都继承自TextView,因此他们都会显示一段文本。但Chrnometer并不显示当前时间,它显示的是从某个起始时间开始,一共过去了多长时间。

          Chronometer的用法也很简单,它只提供了一个android:format属性,用于指定计时器的计时格式。除此之外,Chronometer支持如下常用方法。

    • setBase(long base):设置计时器的时间格式。
    • setFormat(String format):设置显示时间的格式。
    • start():开始计时
    • stop():停止计时
    • setOnChronemeterTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定事件监听器,当计时器改变时触发该监听器。

         下面的程序简单示范了Chronometer的用法,该程序界面中定义了一个Chronometer组件和一个Button组件。当用户单击Button时系统开始计时,当计时超过20秒时停止计时。

          下面是该程序的代码。   

      

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center_horizontal"
        >
    <Chronometer android:id="@+id/test"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 />
    <Button android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始"
        android:textSize="14dp" />
    
    </LinearLayout>

    后台代码:

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.*;
    import android.widget.*;
    import android.widget.Chronometer.*;
    
    public class ChronometerTest extends Activity {
       Chronometer ch;
       Button start;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_chronometer_test);
            //获取计时器组件
            ch=(Chronometer)findViewById(R.id.test);
            //获取"开始"按钮
            start=(Button)findViewById(R.id.start);
            start.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View source) {
                    // TODO Auto-generated method stub
                    //设置开始计时的时间
                    ch.setBase(SystemClock.elapsedRealtime());
                    //启动计时器
                    ch.start();
                    start.setEnabled(false);
                }
            });
            //为Chronometer绑定事件监听器
            ch.setOnChronometerTickListener(new OnChronometerTickListener(){
    
                @Override
                public void onChronometerTick(Chronometer chronometer) {
                    // TODO Auto-generated method stub
                    //如果从开始计时到现在超过了20s
                    if(SystemClock.elapsedRealtime()-ch.getBase()>20*1000)
                    {
                        ch.stop();
                        start.setEnabled(true);
                    }
                }
            });
            
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.chronometer_test, menu);
            return true;
        }
    
    }

        程序中用到的SystemClock类仅仅是一个获取系统时间、运行时间的工具类,用法很简单。

       运行上面的Activity得到图2.28所示效果

      图2.28  计时器

  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3345153.html
Copyright © 2020-2023  润新知