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,一经查实,立即删除!

相关文章

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

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

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

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

使用Apache POI插入内容

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

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

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

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

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

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

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

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

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

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

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

工业交换机有哪些功能?

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

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

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

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

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

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

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

4G(LTE)是如何实现智慧农业物联网的?

农业&#xff0c;其中传统农业是在自然经济条件下&#xff0c;采用人力、畜力、手工工具、铁器等为主的手工劳动方式&#xff0c;靠世代积累下来的传统经验发展&#xff0c;以自给自足的自然经济居主导地位的农业。传统农业是一种生计农业,农产品有限,家庭成员参加生产劳动并进…

蓝牙核心规范5.1:革新精确定位技术

1月29日&#xff0c;蓝牙技术联盟&#xff08;BluetoothSIG&#xff09;正式公布了蓝牙 5.1 版本的核心规范。 此规范在未来将取代Wi-Fi的辅助定位功能&#xff0c;为需要GPS等位置服务的场景助力&#xff0c;包括确定距离甚至精确位置。 新变化中最值得一说的便是蓝牙5.1将会…

物联网为电信运营商带来众多商业机会

到2020年底&#xff0c;物联网年收入预计将超过4500亿美元&#xff0c;这为电信服务商带来了巨大机遇。然而&#xff0c;竞争将是激烈的&#xff0c;全球主要电信运营商已经投资了数十亿美元在网络连接以及物联网服务和平台上&#xff0c;这意味着较小的运营商需要快速采取行动…

核心交换机相关技术参数详解

核心交换机一般指三层交换机。三层交换机就是具有部分路由器功能的交换机&#xff0c;工作在OSI网络标准模型的第三层&#xff1a;网络层。三层交换机的最重要目的是加快大型局域网内部的数据交换&#xff0c;所具有的路由功能也是为这目的服务的&#xff0c;能够做到一次路由&…

各种工业以太网技术浅析

高性能、工厂设备和IT系统集成&#xff0c;以及工业物联网的需求驱动促进了工业以太网的增长。在实时工业以太网中&#xff0c;EPA、 EtherCAT、 RTEX、Ethernet Powerlink、PROFINET、Ethernet/IP、SERCOS III是主要的竞争者。下面对它们进行简单比较。 Ethernet/IP Etherne…

核心交换机相对于普通交换机的优势

核心交换机我们平时提的挺多&#xff0c;相比较普通交换机而言&#xff0c;核心交换机需要具备以下特质&#xff1a;大缓存、高容量、虚拟化、FCOE、二层TRILL技术等方面的特征。那么&#xff0c;核心交换机相对于普通交换机有哪些优势呢&#xff1f;接下来我们就跟随飞畅科技的…

NB-IOT和LoRa技术优劣对比

LPWAN(low-power Wide-Area Network&#xff0c;低功耗广域网)近年来快速兴起。NB-IoT与LoRa是其中的典型代表&#xff0c;也是最有发展前景的两个低功耗广域网通信技术。那么NB-IOT 和 LoRa物联网长距离低功耗无线技术哪个更好呢? NB-IoT技术具备四大优势&#xff1a; 一是覆…

物联网生态系统的安全与威胁

物联网正在催生一个全新的连网设备生态系统&#xff0c;这与我们过去习惯的系统集中架构完全不同。新的设备连网世界将会通过云和其他无线方式进行大量敏感数据的交换。尽管物联网对个人和企业都有巨大的好处&#xff0c;但它也带来了一大堆安全问题&#xff0c;人们不能对此视…