zoukankan      html  css  js  c++  java
  • 计时器

           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  计时器

  • 相关阅读:
    数据库结构中的"树"
    Jquery学习
    cms系统也不复杂
    让你的博客园变灰
    IList对象排序方法
    计算机简介(二)
    在同一台电脑上使用U盘时快时慢的解决方法
    计算机简介
    合并排序
    javascript小结
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3345153.html
Copyright © 2011-2022 走看看