// 时间选择器 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人点赞