日历视图CalendarView和定时器Chronometer
上一期学习了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());
}
}
运行程序,可以看到下图所示界面效果。
至此,关于时间和日期类的组件基本学得差不多了,你都掌握得怎么样呢?
- Java 解析Excel文件为JSON
- SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
- CentOS 6.5 安装nginx 1.6.3
- C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密
- MyBatis两张表字段名相同产生的问题
- mongo 3.0 备份和还原数据库 ,及too many positional arguments错误
- AngularJs HTTP响应拦截器实现登陆、权限校验
- C# 读写App.config配置文件的方法
- Golang语言社区--Go语言基础第四节类型
- Golang语言社区--go语言编写Web程序
- Golang语言社区--Go语言基础第五节流程控制
- (14)不同基因坐标转换-生信菜鸟团博客2周年精选文章集
- (15)基因组各种版本对应关系-生信菜鸟团博客2周年精选文章集
- go 并发处理脚本
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在Laravel中使用MongoDB的方法示例
- 基于thinkphp6.0的success、error实现方法
- Yii框架模拟组件调用注入示例
- 解决laravel 表单提交-POST 异常的问题
- laravel5.0在linux下解决.htaccess无效和去除index.php的问题
- laravel返回统一格式错误码问题
- 使用 PHP Masked Package 屏蔽敏感数据的实现方法
- PHP简单实现图片格式转换(jpg转png,gif转png等)
- 在thinkphp5.0路径中实现去除index.php的方式
- Laravel5.5 手动分页和自定义分页样式的简单实现
- laravel自定义分页的实现案例offset()和limit()
- Laravel6.0.4中将添加计划任务事件的方法步骤
- Laravel 不同生产环境服务器的判断实践
- 解决thinkPHP 5 nginx 部署时,只跳转首页的问题
- Laravel 类和接口注入相关的代码