android 弹窗时间,Android使用WheelView自定义时间选择器弹窗
listHour = new ArrayList<>();
private ListlistMinute = new ArrayList<>();
private Context mContext;
private int currentYear; //系统当前时间
private int currentMonth;
private int currentDay;
private int currentHour;
private int currentMinute;
private int selectYear = 0;
private int selectMonth = 0;
public DateDialog(@NonNull Context context) {
super(context, R.style.DocOptionDialogStyle);
this.mContext = context;
View view = LayoutInflater.from(context).inflate(R.layout.dialog_date_layout, null);
setContentView(view);
initData();
initView(view);
}
private void initData() {
initCurrentDate();
initYear();
initMonth();
initDay();
initHour();
initMinute();
}
/**
* 初始化系统当前时间
*/
private void initCurrentDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
currentYear = calendar.get(Calendar.YEAR);
currentMonth = calendar.get(Calendar.MONTH);
currentDay = calendar.get(Calendar.DAY_OF_MONTH);
currentHour = calendar.get(Calendar.HOUR_OF_DAY);
currentMinute = calendar.get(Calendar.MINUTE);
}
/**
* 集合添加年
*/
private void initYear() {
for (int i = currentYear; i <= currentYear + 1; i++) {
listYear.add(i + "年");
}
}
/**
* 集合添加月
*/
private void initMonth() {
for (int i = 1; i <= 12; i++) {
listMonth.add(String.format("%02d", i) + "月");
}
}
/**
* 集合添加天数
*/
private void initDay() {
//判断一个月有多少天
int hasDay = getDay(currentYear, (currentMonth+1));
for (int i = 1; i <= hasDay; i++) {
listDay.add(String.format("%02d", i) + "日");
}
}
/**
* 集合添加小时
*/
private void initHour() {
for (int i = 0; i <= 24; i++) {
listHour.add(String.format("%02d", i) + "点");
}
}
/**
* 集合添加分钟
*/
private void initMinute() {
for (int i = 0; i <= 60; i++) {
listMinute.add(String.format("%02d", i) + "分");
}
}
private void initView(View view) {
tv_dialog_cancel = view.findViewById(R.id.tv_dialog_cancel);
tv_dialog_ok = view.findViewById(R.id.tv_dialog_ok);
wv_year = view.findViewById(R.id.wv_year);
wv_month = view.findViewById(R.id.wv_month);
wv_day = view.findViewById(R.id.wv_day);
wv_hour = view.findViewById(R.id.wv_hour);
wv_minute = view.findViewById(R.id.wv_minute);
//取消弹窗
tv_dialog_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
//设置在屏幕中的位置
Window window = getWindow();
window.setGravity(Gravity.CENTER); //居中
DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();
window.setLayout((int) (displayMetrics.widthPixels * 0.9), WindowManager.LayoutParams.WRAP_CONTENT);
//设置年数据
wv_year.setWheelAdapter(new ArrayWheelAdapter(mContext)); // 文本数据源
wv_year.setSkin(WheelView.Skin.Holo); // common皮肤
wv_year.setWheelData(listYear);
wv_year.setSelection(0);
wv_year.setVisibility(View.VISIBLE); //解决数据加载延迟
wv_year.setOnWheelItemSelectedListener(new WheelView.OnWheelItemSelectedListener() {
@Override
public void onItemSelected(int position, Object o) {
updateDay();
}
});
//月
wv_month.setWheelAdapter(new ArrayWheelAdapter(mContext)); // 文本数据源
wv_month.setSkin(WheelView.Skin.Holo); // common皮肤
wv_month.setWheelData(listMonth);
wv_month.setSelection(currentMonth);
wv_month.setVisibility(View.VISIBLE);
wv_month.setOnWheelItemSelectedListener(new WheelView.OnWheelItemSelectedListener() {
@Override
public void onItemSelected(int position, Object o) {
updateDay();
}
});
//日
wv_day.setWheelAdapter(new ArrayWheelAdapter(mContext)); // 文本数据源
wv_day.setSkin(WheelView.Skin.Holo); // common皮肤
wv_day.setWheelData(listDay);
wv_day.setSelection(currentDay - 1);
wv_day.setVisibility(View.VISIBLE);
//时
wv_hour.setWheelAdapter(new ArrayWheelAdapter(mContext)); // 文本数据源
wv_hour.setSkin(WheelView.Skin.Holo); // common皮肤
wv_hour.setLoop(true);
wv_hour.setWheelData(listHour);
wv_hour.setSelection(currentHour);
wv_hour.setVisibility(View.VISIBLE);
//分
wv_minute.setWheelAdapter(new ArrayWheelAdapter(mContext)); // 文本数据源
wv_minute.setSkin(WheelView.Skin.Holo); // common皮肤
wv_minute.setLoop(true);
wv_minute.setWheelData(listMinute);
wv_minute.setSelection(currentMinute);
wv_minute.setVisibility(View.VISIBLE);
}
/**
* 用户滑动时更新每个月的天数
*/
private void updateDay() {
//获取当前滑动的位置
selectYear = Integer.parseInt(wv_year.getSelectionItem().toString().replace("年", ""));
selectMonth = Integer.parseInt(wv_month.getSelectionItem().toString().replace("月", ""));
//判断一个月有多少天
int hasDay = getDay(selectYear, selectMonth);
listDay.clear();
for (int i = 1; i <= hasDay; i++) {
listDay.add(String.format("%02d", i) + "日");
}
wv_day.setWheelData(listDay);
}
/**
* 根据是否闰年和月份判断本月的天数
*
* @param year
* @param month
* @return
*/
private int getDay(int year, int month) {
int day = 30;
boolean flag = false;
switch (year % 4) {
case 0:
flag = true;
break;
default:
flag = false;
break;
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 2:
day = flag ? 29 : 28;
break;
default:
day = 30;
break;
}
return day;
}
/**
* 确定按钮监听
*
* @param listener
*/
public void onClickOkBtnLisitener(View.OnClickListener listener) {
tv_dialog_ok.setOnClickListener(listener);
}
/**
* 获取时间
* @return
*/
public String getDate(){
String year = wv_year.getSelectionItem().toString().replace("年","");
String month = wv_month.getSelectionItem().toString().replace("月","");
String day = wv_day.getSelectionItem().toString().replace("日","");
String hour = wv_hour.getSelectionItem().toString().replace("点","");
String minute = wv_minute.getSelectionItem().toString().replace("分","");
return year+"-"+month+"-"+day+" "+hour+":"+minute;
}
/**
* 根据时间戳验证用户选择时间是否合理
* @return
*/
public boolean isValid(){
long time = Long.parseLong(TimeUtil.createTimestamp(getDate()));
if (TimeUtil.getUnixStamp()>time){
return false;
}
return true;
}
}
android 弹窗时间,Android使用WheelView自定义时间选择器弹窗相关推荐
- 小程序picker标题_微信小程序实现自定义picker选择器弹窗内容
微信小程序中定义好的几种picker选择器,不管是日期选择器还是地区选择器,或是其他的都有定死的样式和内容. 例如: 但是大多数开发程序的情况下还是需要自己写样式的,或是内容的. 例如: wxml 选 ...
- android自定义滚动日期,Android基于wheelView实现自定义日期选择器
本文实例为大家分享了Android实现自定义日期选择器的具体代码,供大家参考,具体内容如下 项目要求效果图: 要求 "6月20 星期五" 这一项作为一个整体可以滑动,"7 ...
- Android基于wheelView的自定义日期选择器(可拓展样式)
基于wheelView的自定义日期选择器 项目要求效果图: 要求 "6月20 星期五" 这一项作为一个整体可以滑动,"7时"."48分"分别 ...
- Apache DolphinScheduler 海豚调度器自定义时间参数
在Apache DolphinScheduler 海豚调度器(本文简称:小海豚) 官网中,我们看到其自定义时间的参数是这样介绍的 1.支持代码中自定义变量名,声明方式:${变量名}.可以是引用 &qu ...
- android toast 自定义时间,Android Toast自定义显示时间
Toast是Android中使用频率较高的弹窗提示手段,使用起来简单.方便.常规使用方法这里不做说明,继前一篇博客<Android中Toast全屏显示> ,其中抛砖引玉的给出一个简单的实现 ...
- Android自定义时间控件不可选择未来时间
本文出自:http://blog.csdn.net/dt235201314/article/details/78718066 Android自定义时间控件选择开始时间到结束时间 Android自定义时 ...
- android自定义横向时间轴,Android自定义时间轴的实现过程
本文讲述Android自定义时间轴的实现过程,供大家参考,具体内容如下 时间轴效果,实际上非常简单,就是listView中一个又一个的条目而已-.大家可以只关注一个条目. 首先展示一个条目的布局效果 ...
- android时间24小时,安卓时间显示TextClock显示日期时间,24小时制和12小时制(自定义...
安卓时间显示TextClock显示日期时间,24小时制和12小时制(自定义 安卓时间显示TextClock显示日期时间,24小时制和12小时制(自定义时间) 这个地方的是按24小时制还是12小时制 是 ...
- Android自定义时间轴
本文讲述Android自定义时间轴的实现过程 相关视频链接: Android自定义控件系列 http://edu.csdn.net/course/detail/3719/65396 Android视频 ...
最新文章
- android控件的对齐方式
- POJ2391 Floyd+离散化+二分+DINIC
- 目前电子计算机已经发展到______阶段,《全国高校计算机联合考试广西考区一级笔试试题卷.doc...
- 用js做分页,点击下一页时,直接跳到了最后一页——Number()的妙用
- Spring Profile模式示例
- spring— Spring与Web环境集成
- js页面倒计时7天 java_javascript实现倒计时效果
- 苹果确认部分iPad Air 3会出现永久性黑屏:可免费维修
- Maven多个mudule只编译、打包指定module
- 机器视觉专用照明光源
- Setinterl全面介绍
- python爬虫刷网课答题_python实践:利用爬虫刷网课
- hbuilderx运行支付宝小程序
- 地理空间框架(二):大地水准面、似大地水准面、参考椭球面
- postgresql表复制
- 【长难句分析精讲】并列结构
- 在JDBC中实现SQL语句的模糊查询
- Android获取软键盘输入内容
- School:1靶机
- 树莓派安装synology_如何从Synology NAS安装(和删除)应用程序包
热门文章
- TF-IDF算法讲解
- php随机获取文件夹,php从文件夹随机读取文件的方法
- InfluxData【付诸实践 01】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
- Spring Boot2.0 JPA 实现分页(简单查询分页、复杂查询分页)
- ElasticSearch集群部署【windows+Linux双系统搭建】
- LeetCode 26 删除有序数组中的重复项
- Traffic Simulator Applet(交通模拟器小程序)
- PHP——访问网站根目录解决方案
- 丑数 Humble Numbers
- 粗题⼈不考你没学过的算法