首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日历视图CalendarView和定时器Chronometer

日历视图CalendarView和定时器Chronometer

作者头像
分享达人秀
发布2018-02-05 12:04:17
2K0
发布2018-02-05 12:04:17
举报
文章被收录于专栏:分享达人秀分享达人秀

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

一、CalendarView

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

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

XML属性

相关方法

说明

android:dateTextAppearance

setDateTextAppearance(int)

设置该日历视图的日期文字的样式

android:firstDayOfWeek

setFirstDayOfWeek(int)

设置每周第一天,允许设置周一到周日任意一天作为每周的第一天

android:focusedMonthDateColor

setFocusedMonthDateColor(int)

设置获取焦点的月份的日期文字的颜色

android:maxDate

setMaxDate(long)

设置该日历组件支持的最大日期,以mm/dd/yyyy格式设置指定最大日期

android:minDate

setMinDate(long)

设置该日历组件支持的最小日期,以mm/dd/yyyy格式设置指定最小日期

android:selectedDateVerticalBar

setSelectedDateVerticalBar(int)

设置绘制在选中日期两边额竖线对应额Drawable

android:selectedWeekBackGroundColor

setSelectedWeekBackGroundColor(int)

设置被选中周的背景色

android:showWeekNumber

setShowWeekNumber(boolean)

设置是否显示第几周

android:shownWeekCount

setShownWeekCount(int)

设置该日历组件总共显示几个星期

android:unfocusedMonthDateColor

setUnfocusedMonthDateColor(int)

设置没有焦点的月份的日期文字的颜色

android:weekDayTextAppearance

setWeekDayTextAppearance(int)

设置星期几的文字样式

android:weekNumberColor

setWeekNumberColor(int)

设置显示周编号的颜色

android:weekSeparatorLineColor

setWeekSeparatorLineColor(int)

设置周分割线的颜色

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

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

<?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 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并获取用户的选择,具体代码如下:

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());
    }
}

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分享达人秀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档