手记

Android零基础入门第60节:日历视图CalendarView和定时器Chronometer

 上一期学习了AnalogClock、DigitalClock和TextClock时钟组件,本期继续来学习日历视图CalendarView和定时器Chronometer。

     一、CalendarView

    日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触 摸来滚动日历。如果希望监控该组件的日期改变,则可调用CalendarView的 setOnDateChangeListener()方法为此组件的点击事件添加事件监听器。 

    用CalendarView时可指定如下表所示的常见XML属性及相关方法。

接下来通过一个简单的示例程序来学习CalendarView的使用。

    继续使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建calendarview_layout.xml文件,在其中填充如下代码片段:

[代码]xml代码:

?

01

02

03

04

05

06

07

08

09

10

11

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

                android:layout_width="match_parent"

                android:layout_height="match_parent" >

    <CalendarView

        android:id="@+id/calendarView"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:firstDayOfWeek="3"

        android:shownWeekCount="4"  />

</RelativeLayout>

    修改MainActivity里面的代码,加载上述定义的布局文件,然后运行程序,可以看到下图所示界面效果。

二、Chronometer

    Chronometer是一个简单的定时器,可以通过setBase()来给它一个基准时间,并从该时间开始计数;如果不给基准时间,将使用调用start()方法时的时间。默认将显示当前"MM:SS"或 "H:MM:SS"格式的时间,当然也可以自定义字符串来格式化显示。

    Chronometer的一个比较重要的XML属性如下:

·         android:format:设置时间的格式如: hh:mm:ss。

    Chronometer的一些常用方法如下:

·         setBase(long base):设置倒计时定时器。

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

·         start():开始计时。

·         stop():停止计时。

    在使用Chronometer时,如果希望监控该组件的时间,则可调用Chronometer的 setOnChronometerTickListener()方法为此组件的点击事件添加事件监听器。 

    接下来通过一个简单的示例程序来学习Chronometer的使用。

    仍然使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建chronnmeter_layout.xml文件,在其中填充如下代码片段:

[代码]xml代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<?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"

              android:gravity="center_horizontal">

 

    <LinearLayout

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:onClick="onStart"

            android:text="开始计时" />

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:onClick="onStop"

            android:text="停止计时" />

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:onClick="onReset"

            android:text="重置" />

    </LinearLayout>

 

    <Chronometer

        android:id="@+id/chronometer"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:padding="15dp"/>

</LinearLayout>

    接下来在Activity中完成Chronometer格式化,并响应用户的操作。新建ChronometerActivity.java文件,加载上面新建的布局文件,初始化DatePicker并获取用户的选择,具体代码如下:

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

package com.jinyu.cqkxzsxy.android.advancedviewsample;

 

import android.os.Bundle;

import android.os.SystemClock;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Chronometer;

 

/**

 * @创建者 鑫鱻

 * @描述 Android零基础入门到精通系列教程,欢迎关注微信公众号ShareExpert

 */

public class ChronometerActivity   extends AppCompatActivity   {

    private Chronometer mChronometer = null;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.chronnmeter_layout);

 

        mChronometer   = (Chronometer) findViewById(R.id.chronometer);

        //setFormat设置用于显示的格式化字符串。

        //替换字符串中第一个“%s”为当前"MM:SS"或 "H:MM:SS"格式的时间显示。

        mChronometer.setFormat("计时:%s");

    }

 

    // 开始计时

    public void onStart(View view) {

        mChronometer.start();

    }

    // 停止计时

    public void onStop(View view) {

        mChronometer.stop();

    }

    // 重置

    public void onReset(View view) {

        //setBase   设置基准时间

        //设置参数base为SystemClock.elapsedRealtime()即表示从当前时间开始重新计时)。

        mChronometer.setBase(SystemClock.elapsedRealtime());

    }

}

    运行程序,可以看到所示界面效果。

    至此,关于时间和日期类的组件基本学得差不多了,你都掌握得怎么样呢?

    今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!

原文链接:http://www.apkbus.com/blog-205190-72664.html

0人推荐
随时随地看视频
慕课网APP