android常用组件之DatePicker和TimePicker

在android中,DatePicker组件和TimePicker组件分别是日期选择器和时间选择器。

该实例中,当点击日期选择器按钮后,弹出日期选择框,用户选择日期后andoid会将日期显示到TextView组件中;当点击时间选择器按钮后,弹出时间选择框,选择后在相应的TextView组件显示时间。

日期选择框和时间选择框在创建实例的过程中,构造方法的参数类似,以下分别介绍:

1、日期选择框创建实例如下

DatePickerDialog datePicker=new DatePickerDialog(Context context, OnDateSetListener callBack, int year, int  monthOfYear, int dayOfMonth);

其中第二个参数是日期选择框的监听方法,通过该方法可以将选择日期的年月日返回,后三个参数是弹出日期选择框的初始日期显示。

日期选择框的监听方法如下,需要覆写onDateSet()方法。

DatePickerDialog.OnDateSetListener date_callback=new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {//arg1~arg3分别是选择的年月日
            textView_Date.setText(String.format("%s年%s月%s日",format_conver(arg1),format_conver(arg2),format_conver(arg3)));//自定义一个format_conver()方法保证格式输出 
        }
    };

2、时间选择框创建实例和日期选择框过程类似,参数基本相同。

TimePickerDialog timePicker=new TimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView);

其中最后一个参数是时间采用12小时制还是24小时制显示。

时间选择框监听方法如下,需要重写onTimeSet()方法。

TimePickerDialog.OnTimeSetListener time_callback=new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker arg0, int arg1, int arg2) {//arg1表示小时,arg2表示分钟    
            textView_Time.setText(String.format("%s:%s", format_conver(arg1),format_conver(arg2)));//格式输出
        }
    };

实例测试代码如下:

首先是布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="main.test_dt_picker.MainActivity">

    <TextView 
        android:id="@+id/tv1_Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/tv_Date"/>
    <Button
        android:id="@+id/btn1_Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_Date" />
    <TextView 
        android:id="@+id/tv2_Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/tv_Time"/>
    <Button 
        android:id="@+id/btn2_Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_Time"/>

</LinearLayout>

其次是strings.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Test_DT_Picker</string>
    <string name="action_settings">Settings</string>
    <string name="tv_Date">None</string>
    <string name="tv_Time">None</string>
    <string name="btn_Date">日期选择器</string>
    <string name="btn_Time">时间选择器</string>

</resources>

再次是android源码文件:

package main.test_dt_picker;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

public class MainActivity extends ActionBarActivity implements OnClickListener{

    private Button button_Date=null,button_Time=null;
    private TextView textView_Date=null,textView_Time=null;
    private DatePickerDialog datePicker=null;
    private TimePickerDialog timePicker=null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button_Date=(Button)findViewById(R.id.btn1_Date);
        button_Time=(Button)findViewById(R.id.btn2_Time);
        textView_Date=(TextView)findViewById(R.id.tv1_Date);
        textView_Time=(TextView)findViewById(R.id.tv2_Time);
        
        button_Date.setOnClickListener(MainActivity.this);
        button_Time.setOnClickListener(MainActivity.this);
        
        datePicker=new DatePickerDialog(MainActivity.this, date_callback, 2012, 6, 18);
        
        timePicker=new TimePickerDialog(MainActivity.this, time_callback, 10, 5, true);   
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        int btn_id=arg0.getId();
        switch (btn_id) {
        case R.id.btn1_Date: datePicker.show();break;
        case R.id.btn2_Time: timePicker.show();break;
        default: break;
        }
    }
    
    DatePickerDialog.OnDateSetListener date_callback=new DatePickerDialog.OnDateSetListener() {
        
        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
            
            textView_Date.setText(String.format("%s年%s月%s日",format_conver(arg1),format_conver(arg2),format_conver(arg3)));
            
        }
    };
    
    TimePickerDialog.OnTimeSetListener time_callback=new TimePickerDialog.OnTimeSetListener() {
        
        @Override
        public void onTimeSet(TimePicker arg0, int arg1, int arg2) {
            
            textView_Time.setText(String.format("%s:%s", format_conver(arg1),format_conver(arg2)));
            
        }
    };
    
    public String format_conver(int s){//该方法为了输出一位数时保证前面加一个0,使之与实现十位数对齐,比如时间是12:5,使用该方法后输出为12:05
        return s>=10?""+s:"0"+s;
    }
}

最后是三张测试图片:

第一张启动后原图:

点击日期选择框按钮后弹出的日期选择框:

最后测试图片:

时间: 2024-11-25 07:14:07

android常用组件之DatePicker和TimePicker的相关文章

Android常用组件

UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:com.novoda.imageloader:异步加载.缓存.显示图片 picasso:com.squareup.picasso:功能强大的图片下载缓存库 PhotoView:uk\co\senab\photoview:支持缩放和各种手势的ImageView ListView JazzyListView

Android UI组件之DatePicker,TimePicker

一直都是在博客园和csdn上看各种大牛的技术博客,终于忍不住要开始自己写博客,希望一起成长,我会把自己的学习的过程放到博客里,但同时我更愿意贴出的是我碰到的错误.也欢迎网友来指导与纠正,大家一起进步,更希望的是自己能够坚持写博客. 废话不多说,直接进入正题,最近在学习android开发,对于这些界面的开发,最重要的就是一堆控件的使用了.今天登场的就是DatePicker和TimePicker.既然要学习,那就需要有学习的资料.碰到一个新的东西最自然的想法就是去搜一下.网上相关的文章也是一大堆.再

android常用组件之RadioGroup

RadioGroup组件内部含有若干个RadioButton组件,每一个RadioButton对应一个选项,利用RadioGroup类似于做单选题. RadioGroup可以理解为存放RadioButton的容器,他将多个RadioButton组织起来,形成一个组,而用户在选择时只能是组内的某一个RadioButton,所以用户直接操作的对象是RadioButton组件. 以下实例是首先选择一个选项,按提交按钮,会弹出一个消息框提示选择信息. 首先是布局文件: <LinearLayout xml

android常用组件之ScrollView

ScrollView在android中可以实现滚动视图,手机屏幕大小有限,当显示的内容较多时,滚动视图就派上用场了. 该实例主要是通过布局文件生成视图,只是演示ScrollView的使用,没有考虑整体美观效果.总体来看,采用垂直布局,在垂直布局的第一行加入一个TextView组件:第二行是一个ScrollView,内部加入垂直布局:第三行再加入一个TextView组件. 在布局文件中使用ScrollView,一般是在ScrollView节点中加入布局方式,如下所示,ScrollView也可以作为

android常用组件之SeekBar

SeekBar组件是可以手动调整进度的拖动条,最常见的使用地方是听音乐或者看视频时,往前或者往后拖动进行定位,手机中的音量控制等. 该实例中,手动改变进度,在TextView组件中会显示相应进度百分比. 首先是布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools&quo

android常用组件之Spinner

Spinner是下拉列表框,用户可以通过该控件从所列item中进行选择,还可以触发item的监听事件. 该实例通过ArrayAdapter类创建了含有30个item的下拉列表,当用户从所列的item中进行选择后,会弹出一个消息框,提示用户所选条目.注意spinner条目监听方法是setOnItemSelectedListener(),而不是setOnItemClickListener(),如果使用setOnItemClickListener()方法会出现秒退现象. 首先是布局文件,添加一个Spi

android常用组件之ProgressBar

ProgressBar组件是无法拖动的进度条,他能够显示当前下载进度,他含有一个次进度条,比如播放流媒体时显示的缓冲进度. 该实例是通过四个按键分别控制主进度条和次进度条的增减. 首先上布局文件代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     and

android常用组件之Checkbox

在android应用开发中,当用到多选框时,可以通过CheckBox组件实现. 该实例实现的功能是,选择列表内的选项,点击提交按钮后,弹出对话框,显示提交内容. 直接上代码. 首先是布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android

Android常用组件Broadcast介绍

一.Broadcast简介 Broadcast是Android的四大组件之一.可分为: 1.普通广播 发送一个广播,所有监听该广播的广播接收者都可以监听到改广播. 2.异步广播 当处理完之后的Intent,依然存在,这时候registerReceiver(BroadcastReceiver,IntentFilter) 还能收到他的值,直到你把它去掉,不能将处理结果传给下一个接收者,无法终止广播. 3.有序广播 按照接收者的优先级顺序接收广播,优先级别在intent-filter中的priorit