时间选择器DatePicker与TimePicker

使用时间选择器总比一个个的手动输入时间的用户体验好,实际中的应用也挺多的。

先看看张什么样吧:

日历选择器

时间选择器

以上两种是以对话框的方式显示的,看着也比较舒服,还有一种是直接粘贴在界面上的(图略了哈)

接下来分别介绍:

public class MainActivity extends AppCompatActivity {

    private DatePicker mDatePicker;
    private TimePicker mTimePicker;
    private TextView mShowTime;
    private Calendar calendar;

    private int year;
    private int month;
    private int day;
    private int hours;
    private int min;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取时间对象
        calendar = Calendar.getInstance();
        year = calendar.get(Calendar.YEAR);
        //月份是从0开始的所以要+1,才能正确显示
        month = calendar.get(Calendar.MONTH) + 1;
        day = calendar.get(Calendar.DAY_OF_MONTH);
        hours = calendar.get(Calendar.HOUR_OF_DAY);
        min = calendar.get(Calendar.MINUTE);

        mShowTime = (TextView) findViewById(R.id.showtime);
        mShowTime.setText("当前时间为" + year + "-" + month + "-" + day + " " + hours + ":" + min );


        mDatePicker = (DatePicker) findViewById(R.id.datepicker);
        //使用init方法初始化日历上的日期,做了相应的处理,所以此处不用+1
        mDatePicker.init(year, calendar.get(Calendar.MONTH), day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker datePicker, int year, int monthOfYear, int daysOfMonth) {
                //监听日历的变化,月份仍是从0开始,所以还要+1
                mShowTime.setText(year + "-" + (monthOfYear + 1) + "-" + daysOfMonth);
            }
        });

        mTimePicker = (TimePicker) findViewById(R.id.timepicker);

        mTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker timePicker, int i, int i1) {
                mShowTime.setText(i + ":" + i1);
            }
        });

    }

    /**
     * 日历以对话框的形式弹出
     * @param view
     */
    public void dateDialogClick(View view) {
        new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int daysOfMonth) {
                //记得获取的月份要+1
                mShowTime.setText(year + "-" + monthOfYear + "-" + daysOfMonth);
            }
        }, year, month-1, day).show();//此处的参数是设置在日历上的初始时间,不要做+1处理,一定不要忘了show哈,否则没有效果的
    }
     /**
     * 时间以对话框的形式弹出
     * @param view
     */
    public void timeDialogClick(View view) {
        new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker timePicker, int hours, int min) {
                mShowTime.setText(hours + ":" + min);
            }
        }, hours, min, true).show();
    }
}

注意月份的+1 问题,就没有什么难点了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值