【Android 应用开发】Android - 时间 日期相关组件

简介: 【Android 应用开发】Android - 时间 日期相关组件

源码下载地址 :


-- CSDN :  http://download.csdn.net/detail/han1202012/6856737


-- GitHub : https://github.com/han1202012/Timer_Date_Test.git




一. 时钟组件



1. AnalogClock组件



外观 : 该组件显示一个表盘, 有分针和秒针转动;


属性介绍 : 该组件可以设置表盘图片, 时针 分针显示图片;


-- 设置表盘 : android:dial, 设置R.drawable资源图片;


-- 设置时针 : android:hand_hour, 设置R.drawable资源图片;


-- 设置分针 : android:hand_minute, 设置R.drawable资源图片;




2. DigitalClock组件



外观 : 该组件就是一个TextView组件, 显示的是当前时间的文本;


属性 : 该组件不能设置android:text属性, 设置了也无效;




3. 源码示例




<?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" >
    <!-- 数字时钟, 可以设置字体大小颜色 -->
    <DigitalClock 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="20pt"
        android:textColor="#DF0101"/>
    <TextView 
        android:layout_height="20dp"
        android:layout_width="fill_parent"
        android:background="#01DF01"/>
    <!-- 模拟时钟, 可设置表盘, 分针, 时针的针脚 -->
    <AnalogClock 
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:dial="@drawable/clock"
        />
</LinearLayout>


效果图 :


image.png



二. 计时器Chronometer



格式属性 : android:format, 指定计时器的计时格式;


常用方法 : 计时器的方法是重点所在, 可以控制计时器开始, 停止等动作;


-- 设置时间 : setBase(long), 设置起始时间;


-- 设置格式 : setFormat(string), 设置时间显示格式;


-- 开始计时 : start(), 开始计时方法;


-- 停止计时 : stop(), 停止计时方法;


-- 设置监听 : setOnChronometerTickListener(), 设置一个监听器, 当计时器计时变化的时候回调这个方法;




实例 :


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" >
    <Chronometer 
        android:id="@+id/chronometer"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:textSize="20pt"
        android:textColor="#DF0101"/>
    <!-- checked为true的时候, 显示开始计时, 此时没有计时 -->
    <ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15pt"
        android:textOn="开始计时"
        android:textOff="停止计时"
        android:checked="true"/>
</LinearLayout>


Activity代码 :


package shuliang.han.time_date_test;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
import android.widget.ToggleButton;
public class ChronometerActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.chronometer);
  final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
  ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle);
  toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(isChecked){//从  显示 停止计时 点击, checked false -> true 停止计时, 显示 开始计时
      chronometer.stop();
    }else{// 显示开始计时 点击, checked true -> false 开始计时, 显示 停止计时
      chronometer.start();
      chronometer.setBase(SystemClock.elapsedRealtime());
    }
    }
  });
  //设置一个监听器, 当超过5秒计时的时候Toast信息
  chronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
    @Override
    public void onChronometerTick(Chronometer chronometer) {
    if(SystemClock.elapsedRealtime() - chronometer.getBase() > 5 * 1000)
      Toast.makeText(getApplicationContext(), "5秒了", Toast.LENGTH_LONG).show();
    }
  });
  }
}


效果图 :

image.png



.




三. 日历视图CalendarView



日历视图 : 日历视图显示了一个7 * N 的方格, 即日历, N可以设置, 通过滚动视图, 可以选择其他月份年份的日期, 同时也可以设置日期改变监听器, 监听日历选择事件;


日历视图的XML属性 :


-- 设置样式 : android:dateTextAppearance, 设置日期文字显示样式;


-- 设置首日 : android:firstDayOfWeek, 设置星期几是每周的第一天, 默认是周一;


-- 选中颜色 : android:focusedMonthDateColor, 设置选中日期所在月份日期颜色;


-- 最大日期 : android:maxDate, 设置支持的最大日期, 以 mm/dd/yyyy 格式指定;


-- 最小日期 : android:minDate, 设置支持的最小日期, 以 mm/dd/yyyy 格式指定;


-- 选中竖线 : android:selectedDateVerticalBar, 设置被选中日期两边的竖线Drawable, 即R.drawable.int资源;


-- 选周颜色 : android:selectedWeekBackground, 设置被选中日期所在周的背景颜色;


-- 周数显示 : android:showWeekNumber, 设置是否显示周数;


-- 设置周数 : android:shownWeekCount, 设置该日历组件一共显示几周;


-- 未选颜色 : android:unfocusedMonthDateColor, 设置未被选中的月份的日期颜色;


-- 星期样式 : android:weekDayTextAppearance, 设置星期几的文字样式;


-- 周号颜色 : android:weekNumberColor, 设置周编号的颜色;


-- 周分割色 : android:weekSeparatorLineColor, 设置周分隔线颜色;




实例 :


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" >
    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:text="日历视图"/>
    <!-- 
      android:firstDayOfWeek 属性, 设置星期几是一周的开始
      android:shownWeekCount 属性, 设置显示几个星期的日历
      android:selectedWeekBackgroundColor 属性, 设置当前选中日期所在的星期背景颜色
      android:focusedMonthDateColor 属性, 显示当前选中月份的日期颜色, 在这个日历中可能同时显示2个月份的日历
      android:weekSeparatorLineColor 属性, 设置将日期分开的线条颜色
      android:unfocusedMonthDateColor 属性, 设置没有选中的月份日期颜色
     -->
    <CalendarView 
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:firstDayOfWeek="7"
  android:shownWeekCount="4"
  android:selectedWeekBackgroundColor="#aff"
  android:focusedMonthDateColor="#f00"
  android:weekSeparatorLineColor="#ff0"
  android:unfocusedMonthDateColor="#f9f"
  android:id="@+id/calendarView" />
</LinearLayout>


Activity源码 :


package shuliang.han.time_date_test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.CalendarView;
import android.widget.CalendarView.OnDateChangeListener;
import android.widget.Toast;
public class CalendarActivity extends Activity {
  private CalendarView calendarView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.calendar);
  calendarView = (CalendarView) findViewById(R.id.calendarView);
  //设置日期改变监听器, 日期改变的时候激活该监听器
  calendarView.setOnDateChangeListener(new OnDateChangeListener() {
    @Override
    public void onSelectedDayChange(CalendarView view, int year, int month,
      int dayOfMonth) {
    Toast.makeText(getApplicationContext(), "选择的日期是 : " + year +" 年"
      + month + " 月 " + dayOfMonth + "日", Toast.LENGTH_LONG).show();
    }
  });
  }
}


效果图 :

image.png




四. 时间选择器



TimePicker可以供用户选择时间, 组件比较美观, 还可以设置时间改变监听器, 一旦时间改变, 就会触发回调方法;




实例源码 :


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" >
    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="时间选择"/>
    <TimePicker 
        android:id="@+id/time_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>
Activity源码 : 
package shuliang.han.time_date_test;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.Toast;
public class TimePickerActivity extends Activity {
  private TimePicker timePicker;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.time_picker);
  timePicker = (TimePicker) findViewById(R.id.time_picker);
  //打印当前时间
  getCurrentDateTime();
  timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    Toast.makeText(getApplicationContext(), "改变时间 : " + hourOfDay + "时" + minute + "分", Toast.LENGTH_LONG).show();
    }
  });
  }
  /*
  * 获取当前的日期和时间, 并将日期时间Toast出来
  */
  private void getCurrentDateTime() {
  //1. 获取当前日历
  Calendar calendar = Calendar.getInstance();
  //2. 获取时间日期方法 : calendar.get(Calendar.YEAR)
  Toast.makeText(getApplicationContext(), "当前时间 : " + 
    calendar.get(Calendar.YEAR) + "年" + 
    calendar.get(Calendar.MONTH) + "月" + 
    calendar.get(Calendar.DATE) + "日" + 
    calendar.get(Calendar.HOUR) + "时" + 
    calendar.get(Calendar.MINUTE) + "分" + 
    calendar.get(Calendar.SECOND) + "秒"
    , Toast.LENGTH_LONG).show();
  }
}



效果图 :

image.png




五. 日期选择器DatePicker



日期选择器常用属性 :


-- 显示日历 : android:calendarViewShown, 是否显示CalendarView日历组件;


-- 选择最后 : android:endYear, 该选择器是否允许选择最后一年;


-- 最大日期 : android:maxDate, 设置日期选择器的最大日期, 格式 mm/dd/yyyy;


-- 最小日期 : android:minDate, 设置日期选择器的最小日期, 格式 mm/dd/yyyy;


-- 选择组件 : android:spinnerShown, 是否显示Spinner组件;


-- 选择首年 : android:startYear, 是否允许选择首年;




实例:


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:startYear 属性 : 设置可选择日期的开始年份
      android:endYear 属性 : 设置可选择日期的结束年份
      android:calendarViewShown 属性 : 设置是否显示CalendarView组件
      android:spinnersShown 属性 : 设置是否显示
     -->
    <DatePicker 
        android:id="@+id/date_picker"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal"
        android:startYear="2000"
        android:endYear="2020"
        android:calendarViewShown="true"
        android:spinnersShown="true"/>
</LinearLayout>

效果图 :

 

image.png

目录
相关文章
|
12月前
|
存储 XML 开发工具
探索安卓应用开发:从基础到进阶
在这篇文章中,我们将一起踏上安卓应用开发的旅程。不论你是编程新手还是希望提升技能的开发者,这里都有你需要的东西。我们会从最基础的概念开始,逐步深入到更复杂的主题。文章将涵盖开发环境设置、用户界面设计、数据处理以及性能优化等方面。通过理论与实践的结合,你将能够构建出既美观又高效的安卓应用。让我们一起开启这段技术之旅吧!
|
12月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
12月前
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
11月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
11月前
|
搜索推荐 Android开发 开发者
安卓应用开发中的自定义控件实践
在安卓应用开发的广阔天地中,自定义控件如同璀璨的星辰,点亮了用户界面设计的夜空。它们不仅丰富了交互体验,更赋予了应用独特的个性。本文将带你领略自定义控件的魅力,从基础概念到实际应用,一步步揭示其背后的原理与技术细节。我们将通过一个简单的例子——打造一个具有独特动画效果的按钮,来展现自定义控件的强大功能和灵活性。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往更高阶UI设计的大门。
133 2
|
12月前
|
缓存 监控 前端开发
探索Android应用开发之旅:从新手到专家
【10月更文挑战第42天】本文将带你踏上Android应用开发的旅程,无论你是初学者还是有经验的开发者。我们将一起探索如何从零开始创建你的第一个Android应用,并逐步深入到更高级的主题,如自定义视图、网络编程和性能优化。通过实际示例和清晰的解释,你将学会如何构建高效、吸引人的Android应用。让我们一起开启这段激动人心的旅程吧!
122 2
|
12月前
|
开发框架 前端开发 Android开发
探索安卓和iOS应用开发中的跨平台解决方案
【10月更文挑战第42天】在移动应用开发的广阔天地中,安卓和iOS系统如同两座巍峨的山峰,分别占据着半壁江山。开发者们在这两座山峰之间穿梭,努力寻找一种既能节省资源又能提高效率的跨平台开发方案。本文将带你走进跨平台开发的世界,探讨各种解决方案的优势与局限,并分享一些实用的代码示例,助你在应用开发的道路上更加游刃有余。
|
12月前
|
前端开发 Android开发 UED
安卓应用开发中的自定义控件实践
【10月更文挑战第35天】在移动应用开发中,自定义控件是提升用户体验、增强界面表现力的重要手段。本文将通过一个安卓自定义控件的创建过程,展示如何从零开始构建一个具有交互功能的自定义视图。我们将探索关键概念和步骤,包括继承View类、处理测量与布局、绘制以及事件处理。最终,我们将实现一个简单的圆形进度条,并分析其性能优化。
|
10天前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
86 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
17天前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
188 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章

下一篇
开通oss服务