优美的日期选择器

优美的日期选择器

开发的一个问题,手机端同样的功能,好看的界面,好的用户体验肯定更佳。最近项目中要使用到日期的选择,本来说用系统自带的(DataPicker或DatePickerDialog)组件,但产品经理需要炫酷的。作为新手的我,第一个想到的是第三方库,有些炫酷的,但是不存在我需求刚刚好的,所以我就选了一个有library的去改原码的样式,OK。

DataPicker

  1. 常用属性
    android:calendarViewShown设置该日期选择器是否显示CalendarView组件
    android:endYear设置日期选择器允许选择的最后一年
    android:startYear设置日期选择器允许选择的第一年
    android:maxDate设置该日期选择器支持的最大日期。以mm/dd/yyyy格式指定最大日期
    android:minDate设置该日期选择器支持的最小日期。以mm/dd/yyyy格式指定最小日期
    android:spinnersShown设置该日期选择器是否显示Spinner日期选择组件
  2. 使用
    2.1 xml的写法
<DatePicker
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:layout_gravity="center_horizontal"
        android:calendarViewShown="true"
        android:endYear="2016"
        android:spinnersShown="true"
        android:startYear="2000" />

2.2 MainActivity

// 获取当前年、月、日、时、分
c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MARCH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);

datePicker = (DatePicker) findViewById(R.id.datePicker);
// 初始化DatePicker组件,初始化时指定监听器
datePicker.init(year, month, day, new OnDateChangedListener() {

    @Override
    public void onDateChanged(DatePicker view, int year,
            int monthOfYear, int dayOfMonth) {
        //月的值0-11,所以需要加一
        monthOfYear = monthOfYear+1;
        Toast.makeText(mContext,
                year + "-" + monthOfYear + "-" + dayOfMonth,
                Toast.LENGTH_SHORT).show();
    }
});

2.3 效果
calendarViewShown为false的

calendarViewShown为true的

DatePickerDialog

通过new关键字创建DatePickerDialog的实例,调用它的show()方法即可将日期选择对话框显示出来

//放在了点击事件里面,弹出对话框
btn.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // 直接创建一个DatePickDialog对话框实例,并将它显示出来
        new DatePickerDialog(mContext, new OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year,
                    int monthOfYear, int dayOfMonth) {
                monthOfYear = monthOfYear + 1;
                Toast.makeText(mContext,
                        year + "-" + monthOfYear + "-" + monthOfYear,
                        Toast.LENGTH_SHORT).show();
            }
            // 设置初始值--通过Calendar.getInstance()获取当前日期
        }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c
                .get(Calendar.DAY_OF_MONTH)).show();
    }
});

效果
日期选择对话框

第三方的

第三方的地址

部分效果图
下面的那个按钮很可以很方便的定制

因为我只需要用到日期选择,为了是apk的包不那么臃肿,所以我就只抽取的日期选择的代码出来时用,同时方便在他的代码上面修改。
demo地址

猜你喜欢

转载自blog.csdn.net/zengyongsun/article/details/52281419