11.android 简单实现一个日期选择器

导读:本篇文章讲解 11.android 简单实现一个日期选择器,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//第一步添加依赖

//日期选择器依赖 implementation ‘com.contrarywind:Android-PickerView:3.2.7’

 

//————直接上代码 简单

private void initView() {
        mShengRi2 = (RelativeLayout) findViewById(R.id.mShengRi2);
        mRiQi = (TextView) findViewById(R.id.mRiQi);



//点击事件里调用
        mShengRi2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initTimePicker1();
                pvTime.setDate(Calendar.getInstance());//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
                pvTime.show();
            }
        });

//系统原生日期选择器
//        Calendar ca = Calendar.getInstance();
//        mYear = ca.get(Calendar.YEAR);
//        mMonth = ca.get(Calendar.MONTH);
//        mDay = ca.get(Calendar.DAY_OF_MONTH);

//        mShengRi2.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
 //可以通过DatePickerDialog的构造方法第二个参数来设置显示样式
                //AlertDialog.THEME_TRADITIONAL
                //AlertDialog.THEME_HOLO_DARK
                //AlertDialog.THEME_HOLO_LIGHT
                //AlertDialog.THEME_DEVICE_DEFAULT_DARK
                //AlertDialog.THEME_DEVICE_DEFAULT_LIGHT
//                new DatePickerDialog(MainActivity.this, onDateSetListener, mYear, mMonth, mDay).show();
//            }
//        });
    }
//系统原生日期选择器
//    private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
//
//        @Override
//        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//            mYear = year;
//            mMonth = monthOfYear;
//            mDay = dayOfMonth;
//            String days;
//            if (mMonth + 1 < 10) {
//                if (mDay < 10) {
//                    days = new StringBuffer().append(mYear).append("年").append("0").
//                            append(mMonth + 1).append("月").append("0").append(mDay).append("日").toString();
//                } else {
//                    days = new StringBuffer().append(mYear).append("年").append("0").
//                            append(mMonth + 1).append("月").append(mDay).append("日").toString();
//                }
//
//            } else {
//                if (mDay < 10) {
//                    days = new StringBuffer().append(mYear).append("年").
//                            append(mMonth + 1).append("月").append("0").append(mDay).append("日").toString();
//                } else {
//                    days = new StringBuffer().append(mYear).append("年").
//                            append(mMonth + 1).append("月").append(mDay).append("日").toString();
//                }
//
//            }
//            mRiQi.setText(days);
//        }
//    };


    private void initTimePicker1() {//选择出生年月日
        //控制时间范围(如果不设置范围,则使用默认时间1900-2100年,此段代码可注释)
        //因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        SimpleDateFormat formatter_year = new SimpleDateFormat("yyyy ");
        String year_str = formatter_year.format(curDate);
        int year_int = (int) Double.parseDouble(year_str);


        SimpleDateFormat formatter_mouth = new SimpleDateFormat("MM ");
        String mouth_str = formatter_mouth.format(curDate);
        int mouth_int = (int) Double.parseDouble(mouth_str);

        SimpleDateFormat formatter_day = new SimpleDateFormat("dd ");
        String day_str = formatter_day.format(curDate);
        int day_int = (int) Double.parseDouble(day_str);


        Calendar selectedDate = Calendar.getInstance();//系统当前时间
        Calendar startDate = Calendar.getInstance();
        startDate.set(1900, 0, 1);
        Calendar endDate = Calendar.getInstance();
        endDate.set(year_int, mouth_int - 1, day_int);

        //时间选择器
        pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                // 这里回调过来的v,就是show()方法里面所添加的 View 参数,如果show的时候没有添加参数,v则为null
                /*btn_Time.setText(getTime(date));*/

                mRiQi.setText(getTime(date));
            }
        })

                .setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
                .setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
                .isCenterLabel(false)
                .setDividerColor(Color.parseColor("#b3b3b3"))
                .setTextColorCenter(Color.BLACK)//设置选中项的颜色
                .setTextColorOut(Color.parseColor("#b3b3b3"))//设置没有被选中项的颜色
                .setContentSize(21)
                .setDate(selectedDate)
                .setLineSpacingMultiplier(1.2f)
                .setTextXOffset(-10, 0,10, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°]
                .setRangDate(startDate, endDate)
//                .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
                .setDecorView(null)
                .build();
    }

    private String getTime(Date date) {//可根据需要自行截取数据显示
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        return format.format(date);
    }

 

//地址:https://github.com/Bigkoo/Android-PickerView 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118383.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!