4.11 Date & Time component
1.TextClock (text clock)
TextClock is a control introduced after Android 4.2 (API 17) to replace DigitalClock!
TextClock can display the current date and time in string format, so it is recommended to use TextClock after Android 4.2.
This control is recommended to be used in the android system of the 24 system. TextClock provides two different formats, one is to display the time and date in the 24 system, and the other is to display the time and date in the 12 system. Most people like the default settings.
In addition, he provides us with the following methods, corresponding to the get method:
Attribute Name |
Related Method |
Description |
android:format12Hour |
setFormat12Hour(CharSequence) |
Set the 12-hour format |
android:format24Hour |
setFormat24Hour(CharSequence) |
Set the 24-hour format |
android:timeZone |
setTimeZone(String) |
set time zone |
例:text_clock.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MM/dd/yy h:mmaa"
tools:targetApi="jelly_bean_mr1"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MMM dd,yyyy h:mmaa"
tools:targetApi="jelly_bean_mr1"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="MMMM dd,yyyy h:mmaa"
tools:targetApi="jelly_bean_mr1"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="E, MMMM dd,yyyy h:mmaa"
tools:targetApi="jelly_bean_mr1"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEEE, MMMM dd,yyyy h:mmaa"
tools:targetApi="jelly_bean_mr1"/>
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="Noteworthy day: 'M/d/yy"
tools:targetApi="jelly_bean_mr1"/>
<AnalogClock
android:layout_width="100dp"
android:layout_height="100dp"/>
</LinearLayout>
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.text_clock);
}
}
Start the test:
2.AnalogClock (analog clock)
android:dial |
table background image |
android:hand_hour |
Clock hand picture |
android:hand_minute |
hour hand picture |
example:
analog_clock.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">
<AnalogClock
android:layout_width="100dp"
android:layout_height="100dp"/>
<AnalogClock
android:layout_width="100dp"
android:layout_height="100dp"
android:dial="@mipmap/biao"
android:hand_hour="@mipmap/zhizhen2"
android:hand_minute="@mipmap/zhizhen1"/>
</LinearLayout>
MainActivity.java:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.analog_clock);
}
}
3. Chronometer (timer)
is a simple timer
chronometer.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/chronometer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/purple_500"
android:textSize="60sp"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal">
<Button
android:id="@+id/btnStart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="开始计时"/>
<Button
android:id="@+id/btnStop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="停止计时"/>
<Button
android:id="@+id/btnReset"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="重置"/>
<Button
android:id="@+id/btn_format"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="格式化"/>
</LinearLayout>
</LinearLayout>
ChronometerActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Toast;
public class ChronometerActivity extends AppCompatActivity implements View.OnClickListener, Chronometer.OnChronometerTickListener {
private Chronometer chronometer;
private Button btn_start,btn_stop,btn_base,btn_format;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chronometer);
initView();
}
private void initView(){
chronometer = (Chronometer) findViewById(R.id.chronometer);
btn_start = (Button) findViewById(R.id.btnStart);
btn_stop = (Button) findViewById(R.id.btnStop);
btn_base = (Button) findViewById(R.id.btnReset);
btn_format = (Button) findViewById(R.id.btn_format);
chronometer.setOnChronometerTickListener(this);
btn_start.setOnClickListener(this);
btn_stop.setOnClickListener(this);
btn_base.setOnClickListener(this);
btn_format.setOnClickListener(this);
}
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.btnStart:
chronometer.start();
break;
case R.id.btnStop:
chronometer.stop();
break;
case R.id.btnReset:
chronometer.setBase(SystemClock.elapsedRealtime());//复位
break;
case R.id.btn_format:
chronometer.setFormat("Time:%s");//更改时间格式
break;
}
}
@Override
public void onChronometerTick(Chronometer chronometer){
String time = chronometer.getText().toString();
if(time.equals("00:00")){
Toast.makeText(ChronometerActivity.this,"时间到了~",Toast.LENGTH_LONG).show();
}
}
}
Start the test:
4.DatePicker (date picker)
android:calendarTextColor |
The color of the text of the calendar list |
android:calendarViewShown |
Whether to display the calendar view |
android:datePickerMode |
android:datePickerMode:组件外观,可选值:spinner,calendar.前者效果如下,默认效果是后者 |
android:dayOfWeekBackground |
顶部星期几的背景颜色 |
android:dayOfWeekTextAppearance |
顶部星期几的文字颜色 |
android:endYear |
去年(内容)比如2010 |
android:firstDayOfWeek |
设置日历列表以星期几开头 |
android:headerBackground |
整个头部的背景颜色 |
android:headerDayOfMonthTextAppearance |
头部日期字体的颜色 |
android:headerMonthTextAppearance |
头部月份的字体颜色 |
android:headerYearTextAppearance |
头部年的字体颜色 |
android:maxDate |
最大日期显示在这个日历视图mm / dd / yyyy格式 |
android:minDate |
最小日期显示在这个日历视图mm / dd / yyyy格式 |
android:spinnersShown |
是否显示spinner |
android:startYear |
设置第一年(内容),比如19940年 |
android:yearListItemTextAppearance |
列表的文本出现在列表中 |
android:yearListSelectorColor |
年列表选择的颜色 |
date_packer.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".DataPickerActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<DatePicker
android:id="@+id/date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarTextColor="@color/purple_500"
android:datePickerMode="calendar"/>
</LinearLayout>
</ScrollView>
DatePackerActivity.java:
package com.example.myapplication;
import android.content.Context;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class DataPickerActivity extends AppCompatActivity implements DatePicker.OnDateChangedListener{
private Context mContext;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.data_picker);
mContext = this;
//日期选择器
DatePicker datePicker = (DatePicker) findViewById(R.id.date_picker);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int monthOfYear = calendar.get(Calendar.MONTH);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
datePicker.init(year,monthOfYear,dayOfMonth,this);
}
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Toast.makeText(this,
"您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日!",
Toast.LENGTH_SHORT).show();
}
}
AndoridManifest.xml:
启动测试:
5.TimePicker(时间选择器)
time_picker.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TimePickerActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TimePicker
android:id="@+id/time_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"/>
</LinearLayout>
</ScrollView>
TimePickerActivity.java:
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TimePicker;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class TimePickerActivity extends AppCompatActivity {
//时间选择器
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.time_picker);
TimePicker timePicker = (TimePicker) findViewById(R.id.time_picker);
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(TimePickerActivity.this,
"您选择的时间是:"+hourOfDay+"时"+minute+"分!",
Toast.LENGTH_SHORT).show();
}
});
}
}
AndoridManifest.xml:
启动测试:
6.CalendarView(日历视图)
android:firstDayOfWeek |
设置一个星期的第一天 |
android:maxDate |
最大的日期显示在这个日历视图mm / dd / yyyy格式 |
android:minDate |
最小的日期显示在这个日历视图mm / dd / yyyy格式 |
android:weekDayTextAppearance |
工作日的文本出现在日历标题缩写 |
calendar_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".CalendarViewActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<CalendarView
android:id="@+id/calendar_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</ScrollView>
CalendarViewActivity.java:
package com.example.myapplication;
import android.os.Bundle;
import android.view.View;
import android.widget.CalendarView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class CalendarViewActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calendar_view);
CalendarView calendarView = (CalendarView) findViewById(R.id.calendar_view);
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener(){
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
Toast.makeText(CalendarViewActivity.this,
"您选择的时间是:"+year+"年"+month+"月"+dayOfMonth+"日",
Toast.LENGTH_SHORT).show();
}
});
}
}
启动测试: