您的位置:首页 > 其它

用DatePicker和TimePicker写的一个日历时间选择案例

2015-05-27 17:11 537 查看

先放效果图吧,如下:






其实整个例子就用了DatePickerTimePicker来完成,非常简单。

下面简单介绍下DatePickerTimePicker 。它们都继承自android.widget.FrameLayout,DatePicker用于展示一个日期选择控件,主要功能是向用户提供包含年、月、日的日期数据并允许用户对其修改。如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器;TimePicker用于展示一个时间选择控件,向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。如果要捕获用户修改时间数据的事件,需要为TimePicker添加OnTimeChangedListener监听器。

作为一个日期选择控件,DatePicker可以通过设置属性来确定日期选择范围,也可以通过定义好的方法获取到当前选中的时间,并且在修改日期的时候,有响应的事件对其进行响应。

DatePicker的一些常用属性如:

1. android:calendarViewShown:是否显示日历

2. android:startYear : 设置可选开始年份

3. android:endYear:设置可选结束年份

4. android:maxDate:设置可选最大日期(以mm/dd/yyyy格式设置)

5. android:minDate:设置可选最小日期(以mm/dd/yyyy格式设置)

PS:注意DatePicker的一个初始化的方法init(),此方法的构造如下:

init(int year,int monthOfYear,int dayOfMonth,DatePicker.OnDateChangedListener onDateChangedListener)


init()用于DatePicker控件的初始化,并且设置日期被修改后回调的响应事件,若要响应此事件,需要实现其中的onDateChanged()方法,如下:

onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)


作为一个时间选择控件来说,TimePicker需要与时间相关的getter、setter方法之外,还需要有时间被修改后回调的响应事件。

TimePicker的一些常用属性如:

1. is24HourView():判断是否为24小时制

2. setIs24HourView():设置是否为24小时制显示

3. getCurrentXxx():获取当前时间

4. setCurrentXxx():设置当前时间

5. setOnTimeChangedListener():设置时间被修改的回调方法(其传递一个 TimePicker.OnTimeChangedListener 接口,需要实现其中的onTimeChanged()方法)

下面是示例的代码

布局代码:

<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" >

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <!-- 日期 -->
        <DatePicker 
            android:id="@+id/date"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </DatePicker>
        <Button
            android:id="@+id/btndate"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/btndate" />
        <!-- 具体时间 -->
        <TimePicker
            android:id="@+id/time"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </TimePicker>
        <Button 
            android:id="@+id/btntime"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/btntime" />

    </LinearLayout>

</ScrollView>


strings.xml文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">DatePick</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="btndate">查看日期请点击这里</string>
    <string name="btntime">查看时间请点击这里</string>
</resources>


MainActivity.java代码:

package com.example.datepick;

import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;

public class MainActivity extends Activity {
    DatePicker datepick;
    TimePicker timepick;
    Button btndate;
    Button btntime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);

        //获取对象
        datepick=(DatePicker)findViewById(R.id.date);
        timepick=(TimePicker)findViewById(R.id.time);
        btndate=(Button)findViewById(R.id.btndate);
        btntime=(Button)findViewById(R.id.btntime);

        //点击显示日期的监听事件
        btndate.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                StringBuilder str=new StringBuilder("您当前选择的日期是:");
                //将当前选中的年月日显示到按钮上(月份记得要+1)
                str.append(datepick.getYear()).append("-").append(datepick.getMonth()+1).append("-").append(datepick.getDayOfMonth());
                btndate.setText(str);
            }
        });

        //点击显示时间的监听事件
        btntime.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                StringBuilder str=new StringBuilder("您当前选择的时间是:");
                //将当前选中的时间显示到按钮上
                str.append(timepick.getCurrentHour()).append(":").append(timepick.getCurrentMinute());
                btntime.setText(str);
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }
}


附上下载地址:http://download.csdn.net/detail/monas/8746787

有问题欢迎大家指教!一起讨论一起进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐