Android开发-Android常用组件-Date Time组件

news2024/12/24 2:55:50

4.11    Date & Time组件

1.TextClock(文本时钟)

TextClock是在Android 4.2(API 17)后推出的用来替代DigitalClock的一个控件!

TextClock可以以字符串格式显示当前的日期和时间,因此推荐在Android 4.2以后使用TextClock。

这个控件推荐在24进制的android系统中使用,TextClock提供了两种不同的格式, 一种是在24 进制中显示时间和日期,另一种是在12进制中显示时间和日期。大部分人喜欢默认的设置。

另外他给我们提供了下面这些方法,对应的还有get方法:

Attribute Name

Related Method

Description

android:format12Hour

setFormat12Hour(CharSequence)

设置12时制的格式

android:format24Hour

setFormat24Hour(CharSequence)

设置24时制的格式

android:timeZone

setTimeZone(String)

设置时区

例: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);
    }
}

启动测试:

2.AnalogClock(模拟时钟)

android:dial

表背景图片

android:hand_hour

表时针图片

android:hand_minute

分时针图片

例:

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(计时器)

就是一个简单的计时器

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

启动测试:

 

4.DatePicker(日期选择器)

android:calendarTextColor

日历列表的文本的颜色

android:calendarViewShown

是否显示日历视图

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();
            }
        });
    }
}
 AndoridManifest.xml:

 启动测试:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[内网]RDP远程桌面密码凭证获取

文章目录 RDP保存凭据通过注册表查看当前主机本地连接过的目标机器记录查看当前主机保存的RDP凭据查看本地用户是否存有RDP密码文件通过密码文件获取guidMasterKey的值根据guidMasterKey找到对应Masterkey解密获取明文以上总结&#xff1a; 在授权渗透过程中&#xff0c;如果获…

PCB当中的跳线有什么作用

在PCB设计中&#xff0c;跳线是一种常见的连接方式。跳线是为了连接电路中的距离较远或无法直接连接的电路元件而设置的&#xff0c;其作用是非常重要的。在本文中&#xff0c;我们将探讨PCB中跳线的作用和应用。 一、什么是跳线 跳线是一种特殊的电路连接方式&#xff0c;它是…

EXCEL 0开头的数据处理

方法一&#xff1a;从数据库中存为csv 再新建一个EXCEL 数据——从文本/CSV 方法二&#xff1a; 在数据库里面加A&#xff0c;在EXCEL里面将A替换成 上单引号 ‘

【002】C++的关键字介绍

C的关键字介绍 引言一、关键字一览表二、数据类型相关的关键字三、存储相关的关键字四、控制语句相关的关键字总结 引言 &#x1f4a1; 作者简介&#xff1a;专注于C/C高性能程序设计和开发&#xff0c;理论与代码实践结合&#xff0c;让世界没有难学的技术。包括C/C、Linux、M…

CentOS7搭建keepalived+DRBD+NFS高可用共享存储

一、服务器信息 IP地址 类型 主机名 操作系统 内存 磁盘 192.168.11.110 主服务器 node01 CentOS7.9 2G 系统盘20G 存储盘20G 192.168.11.111 备服务器 node02 CentOS7.9 2G 系统盘20G 存储盘20G 二、两台主机…

新王诞生!ACP世界大赛中国区总决赛超燃收官!

“夺最高的冠&#xff0c;摘最亮的星&#xff01;” 2023 Adobe Certified Professional 世界大赛中国区总决赛 冠军诞生&#xff01; 2023ACP世界大赛中国区总决赛于5月13日-5月14日在苏州西交利物浦大学举办&#xff0c;历时2天的精彩角逐&#xff0c;于今日圆满收官&…

socket各个结构体及其参数

1.sockaddr_in结构体 //老的结构体 struct sockaddr{unsigned short sa_family; //地址类型,AF_xxxchar sa_data[14]; //14字节的端口和地址 }struct sockaddr_in{short int sin_family; //地址类型unsigned short int sin_port; //端口号st…

如何在项目中自定义注解实现权限数据管理案例

如何在项目中自定义注解实现权限数据管理案例 一、准备工程基本功能1. 创建工程并添加依赖2. 配置数据库信息3. Mybatis-Plus 代码生成器生成基本项目结构4. 因为项目中引入了spring-security&#xff0c;所有接口被保护了&#xff0c;所以用户实体和service分别实现UserDetail…

一封普通的SOA检讨书

近来许多文章关于SOA是否应当被看作是一个失败。Gartner分析师们也参与了这场争论&#xff0c;写了一封虚拟的信&#xff0c;以项目经理、企业架构师或首席开发工程师的名义&#xff0c;致“CIO、CEO、CFO、CTO和所有股东”&#xff0c;表明为什么作者承认SOA完全是场失败&…

自闭症儿童为何越来越多?可能与这3大原因有关

自闭症儿童&#xff0c;常被亲切的称为“来自星星的孩子”&#xff0c;这个名字虽好听, 但对孩子来说&#xff0c;却是恶梦般的存在。患有自闭症的宝贝不仅和外界隔绝&#xff0c;就连自己的父母仿佛也“形同陌路”般。 而近年来&#xff0c;自闭症的患病率有不断走高的趋势&a…

知识库AI部署搭建-唯一客服系统文档中心

唯一客服系统知识库服务&#xff0c;支持向量形式个性化训练ChatGPT&#xff0c;该服务是独立搭建的&#xff0c;下面是一些介绍 安装docker 现在基于GPT相应实现自建本地知识库&#xff0c;必不可少的就是向量数据库&#xff0c;现在介绍下qdrant向量数据库的安装。 因为qdran…

加密解密软件VMProtect教程(四):准备项目之使用MAP文件

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

JSON, AJAX

文章目录 JSON和AJAX文档介绍1. JSON介绍1.1 JSON快速入门1.2 JSON和字符串转换1.2.1 JSON转字符串1.2.2 字符串转JSON1.2.3 JSON和字符串转换细节 1.3 JSON在java中使用1.3.1 Java对象和JSON字符串转换1.3.2 List对象和JSON字符串转换1.3.3 Map对象和JSON字符串转换 2. Ajax介…

Python实现SMS-Activate接口调用,获取手机号和验证码

前言 本文是该专栏的第27篇,后面会持续分享python的各种干货知识,值得关注。 对于SMS-Activate平台及其注册操作方法,这里就不过多详述了。尤其随着chatgpt的火爆,让sms-activate的热度也随之上涨。可能多数同学,是通过网页操作来获取手机号。而本文主要来介绍使用python…

Lua脚本语言快速上手(针对redis)

目录 基本介绍 设计目的 Lua 特性 lua基本语法 变量 流程控制 redis执行lua脚本 - EVAL指令 案例1&#xff1a;基本案例 案例2&#xff1a;动态传参 案例3&#xff1a;执行redis类库方法 案例4&#xff1a;给redis类库方法动态传参 案例5&#xff1a;pcall函数的使…

linux学习[10]磁盘与文件系统(1):查看磁盘容量指令df 评估文件系统的磁盘使用量指令 du

文章目录 前言1. df指令2. du指令 前言 TF卡制作的过程中涉及到了磁盘分区格式化等问题&#xff0c;当时对具体的指令理解不是特别深刻&#xff1b;由此引申到我对linux中的整个磁盘与文件系统没有一个全面的认识&#xff0c;这个磁盘与文件系统的系列博客章节就对这些进行记录…

电脑技巧:分享六个有趣好玩的网站,值得收藏

目录 1、Weavesilk 2、一键抠图 3、狗屁不通文章生成器 4、小霸王在线小游戏 5、世界名画在线拼图 6、寻找不动的emoji 今天小编给大家分享六个有趣好玩的网站&#xff0c;值得收藏&#xff01; 1、Weavesilk Weavesilk是一个光线绘画网站&#xff0c;它不需要有任何绘画…

基于python计算生态的第三方库总结与介绍

摘要&#xff1a;Python语言有超过12万个第三方库&#xff0c;覆盖信息技术几乎所有领域。即使在每个方向&#xff0c;也会有大量的专业人员开发多个第三方库来给出具体设计。正是因为python有了这么多“隐形的翅膀”&#xff0c;所以python的功能才足够庞大。本文主要针对pyth…

浏览器指纹

目录 下载安装与运行 软件目前可以随机的指纹 指纹随机化的好处 什么时候不需要指纹随机化 如何在软件上设置指纹 进入指纹设置的两个入口 指纹设置的两个步骤 如何获取随机指纹 设置过程&#xff08;动画演示&#xff09; 常见问题 浏览器指纹的有效期 同一个电脑…

【网站搭建】想搭建属于自己的网站吗,教你用ECS免费搭建网站

文章目录 前言ECS尾声 前言 Hello小伙伴们好久不见啦&#xff0c;博主一直忙得不可开交&#xff01; 久别重逢&#xff0c;博主最近发现了一个搭建网站的好方法&#xff0c;想要搭建网站的小伙伴们快来试试看吧&#xff01; ECS 用ECS搭建网站&#xff0c;可以说真的太爽啦…