android 中文 api (43) —— Chronometer

简介:

正文

  一、结构

    public class Chronometer extends TextView

 
 

    java.lang.Object

    android.view.View

      android.widget.TextView

        android.widget.Chronometer

 

  二、概述

    
 

  类实现了一个简单的计时器。

    你可以通过elapsedRealtime()给它一个基准时间,并从该时间开始计数。如果你不给它基准时间,它将使用你调用start()时的时间。默认它将显示当前"MM:SS" "H:MM:SS"格式的时间,或者你能通过setFormat(String)设置一个任意字符串来格式化显示计时器显示的时间。

 

  三、XML属性

属性名称

描述

android:format

格式化字符串:如果指定,计时器将根据这个字符串来显示,替换字符串中第一个“%s”为当前"MM:SS""H:MM:SS"格式的时间显示。如果不指定,计时器将简单的显示"MM:SS" or "H:MM:SS"格式的时间。(译者注:如:“This is a Chronometer %s”

 

  四、构造函数

 

         public Chronometer (Context context)

  初始化计时器对象。设置当前时间为基准时间。(译者注:通过程序动态创建计时器对象)

 

  public Chronometer (Context context, AttributeSet attrs)

  初始化标准视图布局信息。设置当前时间为基准时间。(译者注:指通过XML来指定一个计时器)

 

  public Chronometer (Context context, AttributeSet attrs, int defStyle)

    初始化标准视图布局信息和风格。设置当前时间为基准时间。 

 

  五、公共方法

 

         public long getBase ()

         返回先前由setBase(long)设置的基准时间。

 

         public String getFormat ()

         返回先前由setFormat(String)设置的格式化字符串。

 

         public Chronometer.OnChronometerTickListener getOnChronometerTickListener ()

                   返回值

                            返回这个监听器(可能为空)是用于监听计时器变化的事件。

 

         public void setBase (long base)

         设置基准时间(译者注:基准时间为真正意义上开始计时的时间,而不是调用start时时间,比如调用本函数并设置参数baseSystemClock.elapsedRealtime()即表示从当前时间开始重新计时)。

                   参数

                            base        使用elapsedRealtime()为基准时间

 

         public void setFormat (String format)

         设置用于显示的格式化字符串。格式化字符串:如果指定,计时器将根据这个字符串来显示,替换字符串中第一个“%s”为当前"MM:SS" "H:MM:SS"格式的时间显示。如果这个格式化字符串为空,或者你从未调用过setFormat()方法,计时器将简单的显示"MM:SS" or "H:MM:SS"格式的时间。(译者注:如:"This is a Chronometer %s"

                   参数

                            format    格式化字符串

 

         public void setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener)

         设置计时器变化时调用的监听事件。

                   参数

                            listener  The listener.

 

         public void start ()

         开始计时。不会影响到由setBase(long)设置的基准时间,仅显示视图。即使部件不显示,计时器也会通过定时处理消息来工作。为了确保不发生资源泄漏,用户应确保每个start()方法都有对应的stop()调用(译者注:有一个start就有一个stop)。(译者注:start只是显示计时,实际上计时是从基准时间开始的,所以通过stop停止计时若干秒后再start时,显示的计时会突然跳到当前显示的计时后的若干秒后继续计时,见此帖子。)

 

         public void stop ()

         停止计时。不会影响到由setBase(long)设置的基准时间,仅显示视图。这将停止消息发送,有效地释放计时器运行时start()占用的资源。

 

  六、受保护方法

 

         protected void onDetachedFromWindow ()

         视图从窗体上移除时调用,同时窗体表面不再显示视图。

 

         protected void onWindowVisibilityChanged (int visibility)

         当窗体中视图的可视性(GONE, INVISIBLE, VISIBLE)发生改变时调用。注意它将告诉你你的窗口是否可以被窗口管理器识别,这并不能说明窗口是否被屏幕上的其他窗口遮挡,即使它本身是可见的。

                   参数

                            visibility 窗口新的可见性

 

  七、补充

    文章链接

      android中的时间服务–Chronometer计时器服务

    示例代码

      Java文件

     public   class  ChronometerDemo  extends  Activity {
            
private  Chronometer cher1;
            @Override
            
protected   void  onCreate(Bundle savedInstanceState) {
                
super .onCreate(savedInstanceState);
                setContentView(R.layout.chronometer);
                cher1 
=  (Chronometer) findViewById(R.id.cher1);
                cher1.setFormat(
" 计时:%s " );
            }
            
/**
            * 开始计时
             * 
@param  view
             
*/
            
public   void  onStart(View view) {
                cher1.start();
            }
            
/**
             * 停止计时
             * 
@param  view
             
*/
            
public   void  onStop(View view) {
                cher1.stop();
            }
            
/**
             * 重置
             * 
@param  view
             
*/
            
public   void  onReset(View view) {
                cher1.setBase(SystemClock.elapsedRealtime());
            }
     }

      XML文件

         < LinearLayout  xmlns:android ="http://schemas.android.com/apk/res/android"  android:orientation ="vertical"
    android:layout_width
="wrap_content"  android:layout_height ="wrap_content" >
    
< Chronometer  android:id ="@+id/cher1"  android:layout_width ="wrap_content"
        android:layout_height
="wrap_content" ></ Chronometer >
    
< LinearLayout  android:layout_width ="wrap_content"  android:layout_height ="wrap_content" >
        
< Button  android:onClick ="onStart"  android:text ="开始计时"  android:layout_width ="wrap_content"  android:layout_height ="wrap_content" ></ Button >
        
< Button  android:onClick ="onStop"  android:text ="停止计时"  android:layout_width ="wrap_content"  android:layout_height ="wrap_content" ></ Button >
        
< Button  android:onClick ="onReset"  android:text ="重置"  android:layout_width ="wrap_content"  android:layout_height ="wrap_content" ></ Button >     
    
</ LinearLayout >
</ LinearLayout >




本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582602 ,如需转载请自行联系原作者
相关文章
|
6月前
|
人工智能 语音技术 开发者
AI工具推荐 ,语音转文字,语音合成工具,永久免费版的AI工具
AI工具推荐 ,语音转文字,语音合成工具,永久免费版的AI工具
|
设计模式 Android开发 Kotlin
Android经典实战之Kotlin委托模式和by关键字
本文介绍了Kotlin中`by`关键字在类及属性委托中的运用,通过实例展示了如何利用类委托简化接口实现,以及如何借助标准与自定义属性委托管理属性的读写操作。通过`by`关键字的支持,Kotlin使得委托模式的实现更为直观且高效。
682 4
|
人工智能 Ubuntu Linux
我的工具库-2025
从2008年编写第一行代码起,我经历了多阶段的知识管理探索。初期使用草稿本和待办事项,后转为离线笔记软件、个人博客与印象笔记,最终在2023年选定Obsidian作为核心工具,结合卡片式笔记法和双链笔记,实现高效的知识收集、加工与分享。我的日常工具涵盖开发环境(如JetBrains系列)、操作系统(Ubuntu)、NAS系统(TrueNAS Scale)及各类辅助应用,形成了一个高度定制化的“外部大脑”。这一套工具不仅支持了我的工作和学习,也让我深刻体会到AI时代的便利与无限可能。
我的工具库-2025
|
存储 缓存 NoSQL
Redis原理—4.核心原理摘要
Redis 是一个基于内存的高性能NoSQL数据库,支持分布式集群和持久化。其网络通信模型采用多路复用监听与文件事件机制,通过单线程串行化处理大量并发请求,确保高效运行。本文主要简单介绍了 Redis 的核心特性。
|
安全 IDE Java
Kotlin学习教程(四)
数据类:使用data class定义 数据类是一种非常强大的类。在Kotlin学习教程(一)中最开始的用的简洁的示例代码就是一个数据类。这里我们再拿过来:
453 2
|
Java Kotlin 索引
Kotlin学习教程(三)
前面介绍了基本语法和编码规范后,接下来学习下基本类型。 在Kotlin中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数和属性。 一些类型可以有特殊的内部表示——例如, 数字、字符和布尔值可以在运行时表示为原生类型值,但是对于用户来说,它们看起来就像普通的类。 在本节中,我们会描述Kotlin中使用的基本类型: 数字、字符、布尔值、数组与字符串。
408 0
|
Java Kotlin
Kotlin学习教程(二)
上一篇文章介绍了`Kotlin`的基本语法,我感觉在继续学习更多知识之前有必要单独介绍以下编码规范。 不管学什么东西,开始形成的习惯以后想改都比较困难。所以开始就用规范的方式学习是最好的。
524 0
|
编解码 网络协议 开发工具
Android平台RTSP|RTMP直播播放器技术接入说明
大牛直播SDK自2015年发布RTSP、RTMP直播播放模块,迭代从未停止,SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。无需赘述,全自研内核,行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以Android平台为例,介绍下如何集成RTSP、RTMP播放模块。
873 0
|
Shell
常用 adb 命令
常用 adb 命令
1099 2
|
算法 Python
Aho-Corasick 算法 AC自动机实现
Aho-Corasick 算法 AC自动机实现
1123 0