android 年月日时分秒控件,Android 年月日时分秒时间选择器

项目开发中 如果你需要一个年月日时分秒类型时间选择器 用DataPicker和TimePicker联动去实现得话 会非常得不方便 会碰到布局不协调得问题 灵活性很低 可实现的布局也就两种 所以为了更好的效果 个人建议你使用 numberPicker 数字选择器 去实现 本人思路是 numberpicker结合PopupWindow 去实现 简单实现代码奉上 欢迎各位大神指正

第一步 popupwindow 的布局效果(底部有图)及xml文件

可根据自己得需要布局 底部效果图 是本案样例

第二步 自定义PopupWindow java 代码

public SPopupWindow(Context context, View.OnClickListener clickListener){

// 填充试图 实例化空间

this.view = LayoutInflater.from(context).inflate(R.layout.popupwindow,null);

day = (NumberPicker) view.findViewById(R.id.day);

hour = (NumberPicker) view.findViewById(R.id.hour);

minte = (NumberPicker) view.findViewById(R.id.minte);

time = (NumberPicker) view.findViewById(R.id.time);

quxiao = (Button) view.findViewById(R.id.quxiao);

year = (NumberPicker) view.findViewById(R.id.year);

month = (NumberPicker) view.findViewById(R.id.month);

// 按钮点击事件

this.setOutsideTouchable(true);

quxiao.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dismiss();

}

});

queren = (Button) view.findViewById(R.id.queren);

queren.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

int yearValue = year.getValue();

int monthValue = month.getValue();

int dayValue = day.getValue();

int timeValue = time.getValue();

int hourValue = hour.getValue();

int minteValue = minte.getValue();

String time = ""+yearValue+monthValue+dayValue+timeValue+hourValue+minteValue;

if (onClickButton!=null){

onClickButton.OnClickButton(time);

}

dismiss();

}

});

this.view.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

int height = view.findViewById(R.id.pop_layout).getTop();

int y = (int) event.getY();

if (event.getAction() == MotionEvent.ACTION_UP) {

if (y < height) {

dismiss();

}

}

return true;

}

});

/* 设置弹出窗口特征 */

// 设置视图

this.setContentView(this.view);

// 设置弹出窗体的宽和高

this.setHeight(RelativeLayout.LayoutParams.WRAP_CONTENT);

this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);

// 设置弹出窗体可点击

this.setFocusable(true);

// 实例化一个ColorDrawable颜色为半透明

ColorDrawable dw = new ColorDrawable(0xb0000000);

// 设置弹出窗体的背景

this.setBackgroundDrawable(dw);

// 获取当前时间 取出年月日时分 作为当前得时间基点

long t = System.currentTimeMillis();

SimpleDateFormat df1 = new SimpleDateFormat("yyyy");

SimpleDateFormat df2 = new SimpleDateFormat("MM");

SimpleDateFormat df3 = new SimpleDateFormat("dd");

SimpleDateFormat df4 = new SimpleDateFormat("HH");

SimpleDateFormat df5 = new SimpleDateFormat("mm");

String y = df1.format(t);

final String m = df2.format(t);

final String d = df3.format(t);

final String h = df4.format(t);

final String mi = df5.format(t);

Log.d("tag", "SPopupWindow: BBB---"+y+m+d+h+mi);

final String[] noons = {"上午","下午"};

day.setMaxValue(31);

day.setMinValue(1);

time.setDisplayedValues(noons);

day.setValue(Integer.valueOf(d));

time.setMaxValue(noons.length-1);

time.setMinValue(0);

time.setValue(0);

hour.setMaxValue(12);

hour.setMinValue(1);

hour.setValue(Integer.valueOf(h));

minte.setMaxValue(60);

minte.setMinValue(1);

minte.setValue(Integer.valueOf(mi));

year.setMinValue(Integer.valueOf(y));

year.setMaxValue(Integer.valueOf(y)+20);

year.setValue(Integer.valueOf(y));

month.setMinValue(1);

month.setMaxValue(12);

month.setValue(Integer.valueOf(m));

// numberpicker 内容的变化监听 时间得逻辑处理可在此处

day.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

Log.d(“tt”, “onValueChange: day–>”+newVal);

day.setValue(newVal);

if (oldVal!=newVal){

hour.setValue(1);

}else {

hour.setValue(Integer.valueOf(h));

}

}

});

time.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

Log.d(“tt”, “onValueChange: tiem–>”+noons[newVal].toString());

time.setValue(newVal);

}

});

hour.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

Log.d("tt", "onValueChange: hour-->"+ newVal);

hour.setValue(newVal);

if (oldVal!=newVal){

minte.setValue(1);

}else {

minte.setValue(Integer.valueOf(mi));

}

}

});

minte.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

}

});

month.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

month.setValue(newVal);

if (oldVal!=newVal){

day.setValue(1);

}else {

day.setValue(Integer.valueOf(d));

}

}

});

year.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

year.setValue(newVal);

if (oldVal!= newVal){

month.setValue(1);

}else {

month.setValue(Integer.valueOf(m));

}

}

});

}

// 定义按钮得点击接口

public interface OnClickButton{

void OnClickButton(String s);

}

// 设置按钮点击方法

public void setOnCilckButton(OnClickButton onClickButton){

this.onClickButton= onClickButton;

}

第三步 在需要activity 中实例化popupwindow 并调用

takePhotoPopWin = new SPopupWindow(this,this);

// 设置Popupwindow显示位置(从底部弹出)

takePhotoPopWin.showAtLocation(findViewById(R.id.main_view), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);

params = getWindow().getAttributes();

//当弹出Popupwindow时,背景变半透明

params.alpha=0.7f;

getWindow().setAttributes(params);

//设置Popupwindow关闭监听,当Popupwindow关闭,背景恢复1f

takePhotoPopWin.setOnDismissListener(new PopupWindow.OnDismissListener() {

@Override

public void onDismiss() {

params = getWindow().getAttributes();

params.alpha=1f;

getWindow().setAttributes(params);

}

});

takePhotoPopWin.setOnCilckButton(new SPopupWindow.OnClickButton() {

@Override

public void OnClickButton(String s) {

Log.d(“tt”, “OnClickButton:———– “+s);

text.setText(s);

}

效果图

f33808ced02aa7b7bbe0a340912c5b9d.png

});

xml布局效果

此时 属于你自己的时间选择器 就完成了 超级简单

800c5287cf6a9f997501d9ef9a4bbfad.png

喜欢得可以点个赞

下载链接 http://download.csdn.net/download/naide_s/9992028

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 广东-国家-开放大学 21秋期末考试招投标与合同管理10217k2 (2)

1、施工合同中&#xff0c;承包人按照工程师提出的施工进度计划修改建议进行了修改&#xff0c;由于修改后的计划不合理而导致的窝工损失应当由( )承担&#xff08;2 分&#xff09; A&#xff0e;发包人 B&#xff0e;发包人与承包人共同 C&#xff0e;承包人 D&#xff0e;工…

[渝粤教育] 广东-国家-开放大学 21秋期末考试电算化会计10169k2

单项选择题 1、在固定资产核算系统的卡片中&#xff0c;能够唯一确定每项资产的数据项是() &#xff08;2 分&#xff09; A&#xff0e;类别编号 B&#xff0e;规格型号 C&#xff0e;资产名称 D&#xff0e;资产编号 单项选择题 1、在固定资产核算系统的卡片中&#xff0c;能…

工业交换机的单模和多模能否互相替代?

客户在购买工业交换机的时候会被问道是要单模单纤、单模双纤、多模双纤等问题&#xff0c;还有用在什么地方&#xff0c;这些只有自己清楚了解了选购工业交换机时才会明白我们应该选什么类型的产品。但有客户会问工业交换机单模和多模能否互相替代?接下来飞畅科技的小编来给你…

物联网常用的组网方式浅析

一石激起千层浪&#xff0c;现代科技的网络革新可以变换着诸多行业的运作模式&#xff0c;甚至直接改变了我们的生活方式&#xff0c;网络技术与我们不再遥远与陌生。今天&#xff0c;小亿就带大家走近“LoRa”、“Zigbee”、“WIFI”、“NB-IOT”、“蓝牙”&#xff0c;现行常…

[渝粤教育] 广东-国家-开放大学 21秋期末考试财务管理10164k2 (2)

1、信用标准是(   )的重要内容。&#xff08;2 分&#xff09; A&#xff0e;现金折扣政策             B&#xff0e;信用期限 C&#xff0e;信用条件 D&#xff0e;收账政策              2、影响企业短期偿债能力的主要因素是&#xff08; &#…

使用Apache POI插入内容

介绍 大家都知道POI&#xff01; 它是可用Java创建Excel文档的最佳库。 它真的很好&#xff0c;可以轻松地完成很多事情。 但是最近我想做些不那么简单的事情。 我想将现有的xlsx文件用作模板&#xff0c;并在某些位置将一些数据插入其中。 在这篇文章中&#xff0c;我将说明为…

DC/DC电源模块是什么?有何特点

一、电源模块是什么&#xff1f; 电源模块是可以直接安装在印刷电路板上的电源供应器&#xff0c;有降压和升压两种&#xff0c;专用集成电路( ASIC )、数字信号处理器( DSP )、微处理器、存储器、现场可编程门阵列( FPGA )及其他数字或模拟负载提供供电。 二、DC/DC电源模块…

【渝粤教育】 广东开放大学 21秋期末考试组织行为学10068k2

1、组织行为学具有应用性学科性质。&#xff08;3 分&#xff09; 正确 错误 2、微观环境因素一般包括经济、政治、文化、法律和科学技术等。&#xff08;3 分&#xff09; 正确 错误 3、奖励与惩罚相结合&#xff0c;应该以罚为主&#xff0c;以奖为辅。&#xff08;3 分&…

工业交换机的价格为什么有高低之分?

最近&#xff0c;飞畅科技的小编发现客户在工业交换机价格上有很大的争议。为什么这么说呢&#xff1f;有的客户觉得为什么你们家的交换机这么贵&#xff0c;我便宜一半也能买到了&#xff0c;还有客户想花这些钱买这么一个工业交换机真的划算吗&#xff1f;那接下来小编就来和…

【渝粤教育】国家开放大学2018年春季 0221-21T数字电子电路 参考试题

编号&#xff1a;0221 2017-2018学年第二学期期末考试 数字电子电路&#xff08;开卷&#xff09; 试 题 2018年 7月 填空题&#xff08;每小题6分&#xff0c;共30分&#xff09; 1、在直流电路中&#xff0c;电容上的 及电感中的 一般不会突变。 2、NPN硅三极管工作在截止状…

html页面与js添加的页面区别,css、js、html三者有何区别?

HTML、CSS、JavaScript是前端学习非常重要的内容&#xff0c;作为前端工程师&#xff0c;建立网站&#xff0c;设计网页需要有一定的审美能力&#xff0c;也需要一定的编程技术。那么它们三者有什么区别&#xff1f;下面本篇文章就来给大家介绍一下。HTML为网页结构。CSS为网页…

电源模块质量好不好,看看以下5点就知道了!

电源模块作为电子设备的心脏&#xff0c;其可靠性直接影响产品的质量好坏&#xff0c;因此&#xff0c;在选择上正确判断模块的好坏显得尤为重要。一般我们在选择上仅从电源的输入、输出、纹波、击穿、温度、认证等特性指标来看&#xff0c;除开这些&#xff0c;我们还可以根据…

【渝粤教育】国家开放大学2018年春季 0507-21T非线性编辑 参考试题

科目编号&#xff1a;[0507] 座位号 2017-2018学年度第二学期期末考试(开卷) 非线性编辑 试题 2018年 7 月 填空题&#xff08;本大题共6小题&#xff0c;共10空&#xff0c;每空3分&#xff0c;共计30分&#xff09; 1&#xff0e;Desktop Display Mode电脑视频显示模式&…

电源模块的6个优势及其作用

随着电子行业的发展&#xff0c;对电源的要求体积更小、可靠性更高。加上高频软开关技术、半导体工艺和封装技术的进步&#xff0c;电源模块的功率密度越来越大&#xff0c;转换效率也越来越高&#xff0c;应用更加简单了。 电源模块与分立式方案相比&#xff0c;优势在哪里&am…

工业交换机有哪些功能?

工业交换机(Industrial Switch)也叫工业以太网交换机&#xff0c;是一种工作在OSI第二层(数据链路层&#xff0c;参见“广域网”定义)上的、基于MAC (网卡的介质访问控制地址)识别、能完成封装转发数据包功能的网络设备。那么&#xff0c;工业交换机的功能有哪些呢&#xff1f;…

【渝粤教育】国家开放大学2018年春季 0689-22T老年心理健康 参考试题

编号&#xff1a;0689 座位号 2017&#xff5e;2018学年度第二学期期末考试 老年心理健康试题 2018年7月 一、名词解释&#xff08;本大题共6小题&#xff0c;每题5分&#xff0c;共30分&#xff09; 期待性焦虑 忧郁&#xff1a; 急躁&#xff1a; 暴躁&#xff1a; 心理…

无处不在的蓝牙-蓝牙模块解析

在如今生活中&#xff0c;每个人都接触了无线连接、蓝牙传输。但是蓝牙模块还是很少见的。那么蓝牙模块有什么作用呢&#xff1f;具体又有哪些应用场景呢&#xff1f;本篇将为大家简单介绍蓝牙模块的作用以及常见的应用场景。 蓝牙模块按照标准分有1.2&#xff0c;2.0&#xf…

连接另一台计算机的用户名和密码,局域网怎么登录另外一台电脑上

如今企业实现局域网远程控制的最常用方法是使用远程控制软件。服务器端程序(Server)和客户端程序(Client)是远程控制软件的主要构成部分。下面是学习啦小编为大家整理的关于局域网怎么登录另外一台电脑上&#xff0c;一起来看看吧!局域网怎么登录另外一台电脑上被控制端要开启远…

【渝粤教育】国家开放大学2018年春季 3897T商务英语1 参考试题

试卷代号&#xff1a;3897 &#xff08;中央广播电视大学&#xff09;2018年春季学期“开放专科”期末考试 商务英语1 试题 2018年7月 注 意 事 项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸…

工业以太网交换机与以太网光端机的区别

关于工业以太网交换机与以太网光端机的区别&#xff0c;简单的说&#xff0c;交换机就是数据交换和共享的设备来的&#xff0c;而光端机是负责传输的设备&#xff0c;两者是完全不同的设备。接下来就由飞畅科技的小编来详细介绍下工业以太网交换机与以太网光端机有什么区别&…