zoukankan      html  css  js  c++  java
  • 计时器(Chronometer)的使用

    安卓提供了一个计时器组件:Chronometer,该组件extends TextView,因此都会显示一段文本,但是它显示的时间是从某个起始时间开始过去了多少时间,它只提供了android:format一个属性用于指定计时器的计数格式。

    Chronometer的用法很简单,它支持如下用法:

    getBase():返回时间。

    setBase(long base):设置计时器的起始时间。

    start():开始计时。

    stop():停止计时。

    setFormat(String format):设置显示时间的格式。

    setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定监听事件。

    下面程序设计了一个一分钟的计时器。

    首先:在XML文件中定义一个Chronomete和Button组件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Chronometer
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/chronometer"
            android:textColor="#ff0303"
            android:textSize="12pt"
            android:layout_gravity="center_horizontal"
            android:focusable="true" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="启动"
            android:id="@+id/button"
            android:layout_gravity="center_horizontal" />
    </LinearLayout>

    其次:通过setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener)函数为计时器绑定监听事件。程序定义了一个Chronometer组件和Button组件。当用户单击Button时开始计时,计时时间为一分钟。

    package happy.chronometer;
    
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.Chronometer;
    
    public class MainActivity extends AppCompatActivity {
    
        Chronometer ch ;
        Button  start ;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.test);
    //        获取计时器组件
            ch=(Chronometer)findViewById(R.id.chronometer);
    //        获取开始组件
            start = (Button)findViewById(R.id.button);
            start.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //设置开始计时时间
                    ch.setBase(SystemClock.elapsedRealtime());
                    //启动计时器
                    ch.start();
                }
            });
            //为计时器绑定监听事件
            ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener()
            {
                @Override
                public void onChronometerTick(Chronometer ch)
                {
                    // 如果从开始计时到现在超过了60s
                    if (SystemClock.elapsedRealtime() - ch.getBase() > 60 * 1000)
                    {
                        ch.stop();
                        start.setEnabled(true);
                    }
                }
            });
        }
    }

     最后:我们可以看到如上的效果,其中时间为已经流逝的时间。

    我若相信崇高,崇高自与我同在!
  • 相关阅读:
    appfabric cache配置,实验记录
    appfabric cache存储ef 查询结果的bug
    CruiseControl.NET svn获取 自动编译 ftp上传
    @Ajax.RenderAction 把局部页改为ajax加载
    分布式架构下的mvc 异步controller ajax comet 长连接
    win7重装iis,搞死
    验证码识别的基本思路及方法
    C# 获取程序当前文件夹
    在c#中 限制文本框只能输入数字
    string字符串 获取指定位置范围的子字符串
  • 原文地址:https://www.cnblogs.com/starluo/p/4999746.html
Copyright © 2011-2022 走看看