Android学习笔记---第五天---基础UI组件---AnalogClock&TextClock&Chronometer(时钟与简单的计时器)

AnalogClock(模拟时钟)直接继承View类
TextClock(文本时钟)继承TextView类
Chronometer(计时器)继承TextView类               (点击此处查看TextView)

AnalogClock

AnalogClock是直接继承了View类,它用于显示一个模拟时钟但他没有秒钟;

属性

android:dial                                  //设置该时钟的表盘图片

android:hand_huor                       //设置该时钟的时针图片

android:hand_minute                    //设置该时钟的分针图片

写一个模拟时钟

    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:dial="@drawable/timg"
        />

效果图

Android学习笔记---第五天---基础UI组件---AnalogClock&TextClock&Chronometer(时钟与简单的计时器)_第1张图片

这个组件十分简单也没什么好说的

TextClock

TextClock继承TextView所以他使用TextView的属性与方法。

我们有时在命令界面要动态的显示一个系统时间时就会去不停的刷新一个输出的文字其实TextClock也是类似的;

属性

android:format12Hour                                         //设置为12小时时制

android:format24Hour                                         //设置为24小时时制

android: TimeZone                                              //设置该时钟的时区

这里提醒一下TextClock只是用来显示系统时间的那么你修改Text属性当然没有作用

写一个TextClock

    <TextClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:format12Hour="yyyy年MM月dd日H:mma EEEE"
        android:drawableEnd="@drawable/ic_launcher"
        android:textSize="30dp"
        />

效果图

Chronometer

Chronometer这个类也继承TextView,他用于计时我们可以用它来实现一个秒表。

属性&方法

android:format                                               //设置显示时间格式


setFormat(String format);                                //设置显示时间格式

setBase(long base);                                       //设置计时器的起始时间

start();                                                           //开始计时

stpo();                                                           //停止计时

setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener);

//绑定一个事件监听器,当计时器改变时触发该监听器;

写一个计时器

    <Chronometer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:id="@+id/newChronometer"/>

        newChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {//这里chronometer是触发该监听器的对象
                if(SystemClock.elapsedRealtime()- chronometer.getBase()>60000) {
                    //SystemClock.elapsedRealtime()返回毫秒,自启动以来开始计时,包括睡眠的时间。
                    chronometer.stop();//停止计时
                    stopButton.setEnabled(false);//将stopButton设置为不可用
                    startButton.setEnabled(true);//将stopButton设置为可用
                }
            }
        });

效果图

完整代码

<?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:orientation="vertical">
    <AnalogClock
        android:layout_width="100sp"
        android:layout_height="wrap_content"
        android:dial="@drawable/timg"
        />
    <TextClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:format12Hour="yyyy年MM月dd日H:mma EEEE"
        android:drawableEnd="@drawable/ic_launcher"
        android:textSize="30dp"
        />
    <Chronometer
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:id="@+id/newChronometer"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/startButton"
            android:text="开始"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/stopButton"
            android:text="停止"
            android:enabled="false"/>
    </LinearLayout>
</LinearLayout>

package cn.demail.myapplication;

import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;

public class Clocktmp extends AppCompatActivity{
    private Button startButton,stopButton;
    private Chronometer newChronometer;
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.clocklayout);

        startButton=(Button)findViewById(R.id.startButton);
        stopButton=(Button)findViewById(R.id.stopButton);
        newChronometer=(Chronometer)findViewById(R.id.newChronometer);
        newChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                if(SystemClock.elapsedRealtime()- chronometer.getBase()>60000) {
                    chronometer.stop();
                    stopButton.setEnabled(false);
                    startButton.setEnabled(true);
                }
            }
        });
        startButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startButton.setEnabled(false);
                stopButton.setEnabled(true);
                newChronometer.setBase(SystemClock.elapsedRealtime());
                newChronometer.start();
            }
        });
        stopButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startButton.setEnabled(true);
                stopButton.setEnabled(false);
                newChronometer.stop();
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

我的博客

你可能感兴趣的:(android)