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 ,如需转载请自行联系原作者
相关文章
|
Android开发
Android studio 2021.3.1不生成iml文件
Android studio 2021.3.1不生成iml文件
563 5
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
1515 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
JSON 自然语言处理 Java
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
2120 0
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
1464 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
Android开发
Android Camera2 拍照(三)——切换摄像头,延时拍摄和闪光模式
原文:Android Camera2 拍照(三)——切换摄像头,延时拍摄和闪光模式 一、切换摄像头 在前后摄像头之间切换,首先需要关闭之前打开的摄像头,关闭preview,之后重新打开新的摄像头,重新打开preview。
4950 1
|
Android开发 PHP
|
4天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
296 116