Android 之 时间选择器

    // 时间选择器 PickerView框架 当前版本4.1.9
    implementation 'com.contrarywind:Android-PickerView:4.1.9'
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.widget.DatePicker;
import android.widget.TimePicker;

import java.util.Calendar;


/**
 * 时间、日期选择器
 */
public class DatePickerHelper {
    /**
     * 日期选择器的回调
     * 格式 年-月-日
     */
    public interface OnDateSelectedBlock {
        void onDateSelected(int year, int month, int dayOfMonth);
    }


    /**
     * 时间选择器的回调
     * 格式 时-分
     */
    public interface OnTimeSelectedBlock {
        void onTimeSelected(int hour, int min);
    }


    /**
     * 日期选择 年-月-日
     *
     * @param activity
     * @param themeResId
     * @param calendar
     */
    public static void showDatePickerDialog(final Activity activity, int themeResId, Calendar calendar, final OnDateSelectedBlock block) {
        // 直接创建一个DatePickerDialog对话框实例,并将它显示出来
        new DatePickerDialog(activity, themeResId, new DatePickerDialog.OnDateSetListener() {
            // 绑定监听器(How the parent is notified that the date is set.)
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                // 此处得到选择的时间,可以进行你想要的操作
                block.onDateSelected(year, monthOfYear, dayOfMonth);
            }
        }
                // 设置初始日期
                , calendar.get(Calendar.YEAR)
                , calendar.get(Calendar.MONTH)
                , calendar.get(Calendar.DAY_OF_MONTH)
        ).show();
    }


    /**
     * 时间选择 时-分
     *
     * @param activity
     * @param themeResId
     * @param calendar
     */
    public static void showTimePickerDialog(Activity activity, int themeResId, Calendar calendar, final OnTimeSelectedBlock block) {
        // Calendar c = Calendar.getInstance();
        // 创建一个TimePickerDialog实例,并把它显示出来
        // 解释一哈,Activity是context的子类
        new TimePickerDialog(activity, themeResId,
                // 绑定监听器
                new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        block.onTimeSelected(hourOfDay, minute);
                    }
                }
                // 设置初始时间
                , calendar.get(Calendar.HOUR_OF_DAY)
                , calendar.get(Calendar.MINUTE)
                // true表示采用24小时制
                , true).show();
    }
}

1679990001706.png

1679990027057.png

        matting_tv_btn01 = findViewById(R.id.matting_tv_btn01);
        matting_tv_btn02 = findViewById(R.id.matting_tv_btn02);
        matting_tv_btn01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /*年月日时间选择器*/
                Calendar calendar = Calendar.getInstance(Locale.CHINA);
                DatePickerHelper.showDatePickerDialog(MattingActivity.this, 2, calendar, dateSelectedBlock);
            }
        });
        matting_tv_btn02.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /*时分时间选择器*/
                Calendar calendar = Calendar.getInstance(Locale.CHINA);
                DatePickerHelper.showTimePickerDialog(MattingActivity.this, 2, calendar, timeSelectedBlock);
            }
        });
    /*日期回调*/
    private DatePickerHelper.OnDateSelectedBlock dateSelectedBlock = new DatePickerHelper.OnDateSelectedBlock() {
        @Override
        public void onDateSelected(int year, int month, int dayOfMonth) {
            Log.d("日期选择器回调", String.valueOf(year) + "年" + String.valueOf(month + 1) + "月" + String.valueOf(dayOfMonth) + "日");

            String s1 = year + "年" + month + 1 + "月" + dayOfMonth + "日";
            matting_tv_btn01.setText(s1);
        }
    };

    /*时间回调*/
    private DatePickerHelper.OnTimeSelectedBlock timeSelectedBlock = new DatePickerHelper.OnTimeSelectedBlock() {
        @Override
        public void onTimeSelected(int hour, int min) {
            Log.d("时间选择器回调", String.valueOf(hour) + "时" + String.valueOf(min) + "分");

            String s2 = hour + "时" + min + "分";
            matting_tv_btn02.setText(s2);
        }
    };

0人点赞

Android 之 布局控件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值