zoukankan      html  css  js  c++  java
  • 计时器Chronometer和时钟(AnalogClock和DigitalClock)

    计时器Chronometer和时钟(AnalogClock和DigitalClock)

    (1)Android提供了两个时钟组件:AnalogClock和DigitalClock,DigitalClock继承了TextView组件,也就是说它本身是一个文本框,只是他里面的内容总是当前时间,所以为DigitalClock设置android:text属性没有作用;AnalogClock继承了View组件,重写了View的OnDraw方法,它会在View上绘制模拟时钟。

    (2)AnalogClock与DigitalClock的异同:它们都会显示当前的时间。DigitalClock显示数字时钟,会显示当前时间的秒数;AnalogClock显示模拟时钟,不会显示当前时间的秒数。

    (3)Android还提供了一个计时器组件:Chronometer,该组件和DigitalClock都继承自TextView,所以它们都会显示出一段文本,但是Chronometer并不显示当前时间,它显示的是从某一个起始时间开始,一共过去了多长时间。

    -------案例:

    (1)main.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical" >
        
        <!-- 定义模拟时钟 -->
        <AnalogClock 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
        
        <!-- 定义数字时钟 -->
        <DigitalClock 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="14pt"
            android:textColor="#f0f"
            android:drawableRight="@drawable/ic_launcher"
            />
        
        <!-- 计时器  继承自TextView组件,并不是显示当前的时间,显示的是从某个起始时间开始一共过去多长时间-->
        <Chronometer 
            android:id="@+id/meter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
        
        <!-- 点击按钮开始计时 -->
        <Button 
            android:id="@+id/but_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="开始"/>
    
    </LinearLayout>

    (2)MainActivity.java文件

    package com.yby.clock;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Chronometer;
    import android.widget.Chronometer.OnChronometerTickListener;
    
    import com.yby.clock.R;
    
    /**
     * 时钟AnalogClock和DigitalClock
     * @author yinbenyang
     * DigitalClock继承自TextView,显示的总是当前的时间,数字时钟,可以显示当前的秒数
     * AnalogClock继承自View组件,重写了View的OnDraw方法,绘制模拟时钟,不会显示当前的秒数
     */
    public class MainActivity extends Activity{
    
        private Button but_start;
        private Chronometer meter;
        
        /**
         * 案例:手机里的劳力士
         * SystemClock是一个获取系统时间的工具类
         */
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            but_start = (Button) findViewById(R.id.but_start);
            meter = (Chronometer) findViewById(R.id.meter);
            but_start.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //设置开始计时的时间
                    meter.setBase(SystemClock.elapsedRealtime());
                    //启动计时器
                    meter.start();
                    //将按钮置为禁用
                    but_start.setEnabled(false);
                }
            });
            
            //为Chronometer绑定时间监听器
            meter.setOnChronometerTickListener(new OnChronometerTickListener() {
                
                @Override
                public void onChronometerTick(Chronometer chronometer) {
                    // TODO Auto-generated method stub
                    //计时超过20s
                    if(SystemClock.elapsedRealtime()-meter.getBase()>20*1000){
                        //停止计时器
                        meter.stop();
                        //设置按钮为启用
                        but_start.setEnabled(true);
                    }
                }
            });
            
        }
    }

    (3)效果图:

  • 相关阅读:
    【NX二次开发】Block UI 多行字符串
    【NX二次开发】Block UI 字符串
    【NX二次开发】Block UI 枚举
    【NX二次开发】Block UI 切换开关
    Css
    禁止多行文本框textarea拖拽
    HTML5+Css3-webkit-filter
    Google Chrome一些小技巧
    js获取节点
    getAttribute:取得属性; setAttribute:设置属性。
  • 原文地址:https://www.cnblogs.com/yby-blogs/p/4394438.html
Copyright © 2011-2022 走看看