doubijuan / SelectDateAndTimeDome

DatePicker与TimePicker的使用

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DatePicker与TimePicker的使用

Android开发中经常会使用到日期选择器与时间选择器,接下来我就来总结一下

#效果图:

先贴一下项目结构图:

MainActivity.class

package com.pumasoft.selectdateandtimedome;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity implements View.OnClickListener {
    private RelativeLayout mRlSelectDate, mRlSelectTime;
    private TextView mTvSelectDate, mTvSelectTime;
    private Context mContext;
    private static int SELECTDATE = 0, SELECTTIME = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this;
        bindView();
    }

    private void bindView() {
        mRlSelectDate = (RelativeLayout) findViewById(R.id.rl_select_date);
        mRlSelectTime = (RelativeLayout) findViewById(R.id.rl_select_time);

        mTvSelectDate = (TextView) findViewById(R.id.tv_select_date);
        mTvSelectTime = (TextView) findViewById(R.id.tv_select_time);

        mRlSelectDate.setOnClickListener(this);
        mRlSelectTime.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.rl_select_date:
                startActivityForResult(new Intent(mContext,
                        DatePickerActivity.class), SELECTDATE);
                break;
            case R.id.rl_select_time:
                if (TextUtils.isEmpty(mTvSelectDate.getText().toString().trim())) {
                    Toast.makeText(mContext, "请先选择请假开始日期", Toast.LENGTH_LONG);
                } else {
                    startActivityForResult(new Intent(mContext,
                            TimePickerActivity.class), SELECTTIME);
                }
                break;
            default:
                break;
        }
    }

    /**
     * 方法名: onActivityResult
     * 方法描述: 回传数据
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == MainActivity.SELECTDATE
                && resultCode == RESULT_OK) {// 选择日期
            String startDate = data.getStringExtra("date");
            mTvSelectDate.setText(startDate);
        } else if (requestCode == MainActivity.SELECTTIME
                && resultCode == RESULT_OK) {// 选择时间
            String leaveStartTime = data.getStringExtra("hourOfDay") + ":"
                    + data.getStringExtra("minute");
            mTvSelectTime.setText(leaveStartTime);
        }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/activity_tabhost_height"
        android:background="@color/app_color">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_centerVertical="true"
            android:text="选择日期与时间"
            android:textColor="@color/white"
            android:textSize="16dp" />
    </RelativeLayout>
    <!-- 选择日期 -->

    <RelativeLayout
        android:id="@+id/rl_select_date"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@drawable/selector_ontouch">

        <TextView
            android:id="@+id/select_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="@dimen/acitvity_margin"
            android:text="选择日期"
            android:textColor="@color/app_color"
            android:textSize="@dimen/size_text_medium" />

        <TextView
            android:id="@+id/tv_select_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@+id/select_date"
            android:textSize="@dimen/size_text_medium" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/acitvity_margin"
            android:src="@mipmap/icon_rirht" />
    </RelativeLayout>

    <View style="@style/horizontalDivider" />
    <!-- 选择时间 -->

    <RelativeLayout
        android:id="@+id/rl_select_time"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@drawable/selector_ontouch">

        <TextView
            android:id="@+id/select_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="@dimen/acitvity_margin"
            android:text="选择时间"
            android:textColor="@color/app_color"
            android:textSize="@dimen/size_text_medium" />

        <TextView
            android:id="@+id/tv_select_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@+id/select_time"
            android:textSize="@dimen/size_text_medium" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/acitvity_margin"
            android:src="@mipmap/icon_rirht" />
    </RelativeLayout>

    <View style="@style/horizontalDivider" />
</LinearLayout>

selector_ontouch.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/gray" android:state_pressed="true" />
    <item android:drawable="@color/white" android:state_pressed="false" />
</selector>

DatePickerActivity.class

package com.pumasoft.selectdateandtimedome;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;

import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @author: adan
 * @description: 日期选择
 * @projectName: SelectDateAndTimeDome
 * @date: 2016-01-11
 * @time: 16:45
 */
public class DatePickerActivity extends Activity implements View.OnClickListener {
    private DatePicker datePicker;
    private Button mBtnDismiss, mBtnOk;
    private Calendar calendar;
    private SimpleDateFormat format;
    private String date;
    private Calendar c;

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

    private void bindView() {
        format = new SimpleDateFormat("yyyy-MM-dd");
        datePicker = (DatePicker) findViewById(R.id.dpPicker);
        mBtnDismiss = (Button) findViewById(R.id.btn_dismiss);
        mBtnOk = (Button) findViewById(R.id.btn_ok);

        c = Calendar.getInstance();
        date = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-"
                + c.get(Calendar.DAY_OF_MONTH); // 获取当前日期
        init();

        mBtnDismiss.setOnClickListener(this);
        mBtnOk.setOnClickListener(this);
    }

    private void init() {
        datePicker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1,
                c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {

                    @Override
                    public void onDateChanged(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {
                        // 获取一个日历对象,并初始化为当前选中的时间
                        calendar = Calendar.getInstance();
                        calendar.set(year, monthOfYear, dayOfMonth);
                        date = format.format(calendar.getTime());
                    }
                });
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.btn_dismiss:
                finish();
                break;
            case R.id.btn_ok:
                Intent intent = new Intent();
                intent.putExtra("date", date);
                setResult(RESULT_OK, intent);
                finish();
                break;
            default:
                break;
        }

    }
}

activity_datepicker.xml.class

<?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:background="@color/white"
    android:orientation="vertical">

    <DatePicker
        android:id="@+id/dpPicker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/app_color"
        android:calendarViewShown="false" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="10dp">

        <Button
            android:id="@+id/btn_dismiss"
            android:layout_width="0dp"
            android:layout_height="35dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1"
            android:background="@drawable/selector_border_ontouch"
            android:text="取消"
            android:textColor="@drawable/selector_text_grey"
            android:textSize="@dimen/size_text_big" />

        <Button
            android:id="@+id/btn_ok"
            android:layout_width="0dp"
            android:layout_height="35dp"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:background="@drawable/selector_slipe_blue"
            android:text="确定"
            android:textColor="@color/white"
            android:textSize="@dimen/size_text_big" />
    </LinearLayout>

</LinearLayout>

TimePickerActivity.class

package com.pumasoft.selectdateandtimedome;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TimePicker;

/**
 * @author: adan
 * @description: 时间选择
 * @projectName: SelectDateAndTimeDome
 * @date: 2016-01-11
 * @time: 16:58
 */
public class TimePickerActivity extends Activity implements View.OnClickListener {
    private TimePicker timePicker;
    private Button mBtnGetTime;

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

    private void bindView() {
        timePicker = (TimePicker) findViewById(R.id.timePicker);
        mBtnGetTime = (Button) findViewById(R.id.btn_gettime);

        // 是否使用24小时制
        timePicker.setIs24HourView(true);
        mBtnGetTime.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.putExtra("hourOfDay", timePicker.getCurrentHour() + "");
        intent.putExtra("minute", timePicker.getCurrentMinute() + "");
        setResult(RESULT_OK, intent);
        finish();
    }
}

activity_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="wrap_content"
    android:background="@color/white"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <TimePicker
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/app_color" />

    <Button
        android:id="@+id/btn_gettime"
        android:layout_width="75dp"
        android:layout_height="35dp"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/selector_slipe_blue"
        android:text="确定"
        android:textColor="@color/white" />

</LinearLayout>

selector_border_ontouch.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <corners android:radius="3dp" />
            <solid android:color="@color/white" />
            <stroke android:width="1dp" android:color="@color/gray" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="rectangle">

            <corners android:radius="3dp" />
            <solid android:color="@color/white" />
            <stroke android:width="1dp" android:color="@color/app_color" />
        </shape>
    </item>

</selector>

selector_slipe_blue.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false"><shape android:shape="rectangle">

            <!-- solid表示远的填充色 -->
            <solid android:color="@color/app_color" />
            <!-- stroke则代表远的边框线 -->
            <stroke android:width="1dp" android:color="@color/app_color" />
            <!-- size控制高宽 -->
            <size android:height="20dp" android:width="20dp" />
        </shape></item>
    <item android:state_pressed="true"><shape android:shape="rectangle">

            <!-- solid表示远的填充色 -->
            <solid android:color="#97D1EC" />
            <!-- stroke则代表远的边框线 -->
            <stroke android:width="1dp" android:color="#97D1EC" />
            <!-- size控制高宽 -->
            <size android:height="20dp" android:width="20dp" />
        </shape></item>

</selector>

selector_text_grey.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/app_color" android:state_selected="true" />
    <item android:color="@color/app_color" android:state_focused="true" />
    <item android:color="@color/app_color" android:state_pressed="true" />
    <item android:color="@color/app_color" android:state_checked="true" />
    <item android:color="@color/gray" />

</selector>

About

DatePicker与TimePicker的使用


Languages

Language:Java 100.0%