推荐一个android 日期时间选择器(转)
最近接触了日期选择的功能,那么肯定得需要一个日期选择控件,Android 系统有自带的 DatePicker 控件,但是不说这个控件有多
难看吧,现在 Android 手机版本那么多,用户弹出来的控件五花八门的也不太好,所以只好走自定义的道路了。先是在网上找了一
些demo看了看,发现不是很满足自己的需求,但是又懒得自己从头写,就找了一个还不错的demo,对代码进行了一些简化,并添
加了一些方法来满足个人需求。
首先看看效果图:
代码比较多就不全部贴上来了,需要的朋友可以自行下载完整源码查看。
这里就大概讲一下几种调用方法:
- private void initDatePicker() {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
- String now = sdf.format(new Date());
- currentDate.setText(now.split(" ")[0]);
- currentTime.setText(now);
- customDatePicker1 = new CustomDatePicker(this, new CustomDatePicker.ResultHandler() {
- @Override
- public void handle(String time) { // 回调接口,获得选中的时间
- currentDate.setText(time.split(" ")[0]);
- }
- }, "2010-01-01 00:00", now); // 初始化日期格式请用:yyyy-MM-dd HH:mm,否则不能正常运行
- customDatePicker1.showSpecificTime(false); // 不显示时和分
- customDatePicker1.setIsLoop(false); // 不允许循环滚动
- customDatePicker2 = new CustomDatePicker(this, new CustomDatePicker.ResultHandler() {
- @Override
- public void handle(String time) { // 回调接口,获得选中的时间
- currentTime.setText(time);
- }
- }, "2010-01-01 00:00", now); // 初始化日期格式请用:yyyy-MM-dd HH:mm,否则不能正常运行
- customDatePicker2.showSpecificTime(true); // 显示时和分
- customDatePicker2.setIsLoop(true); // 允许循环滚动
- }
这里是对自定义控件的初始化以及一些参数的设置,其中关键的是一个构造方法和两个设置显示效果的方法。
- public CustomDatePicker(Context context, ResultHandler resultHandler, String startDate, String endDate)
其中,第一个参数是 Activity 的Context,第二个参数是一个回调结果的接口,通过该接口可以把选中的时间发送给当前 Activity ,
第三个和第四个参数分别为该日期控件允许选择的范围的起始时间和结束时间。这里需要说明一下的是起始时间和结束时间的格式
必须为“yyyy-MM-dd HH:mm”,否则该控件不会被初始化。
- void showSpecificTime(boolean show)
- void setIsLoop(boolean isLoop)
第一个方法用于设置该日期选择控件是否显示时和分,如上两张图所示,一个只能选择到天,另一个可以选择到分。
第二个方法用于设置该日期选择控件中的滚轴是否可以循环滚动,如上两张图所示,一个滚动到底就不能继续了,另一个可以循环
滚动。
初始化成功后,可以通过以下方式调用:
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.selectDate:
- // 日期格式为yyyy-MM-dd
- customDatePicker1.show(currentDate.getText().toString());
- break;
- case R.id.selectTime:
- // 日期格式为yyyy-MM-dd HH:mm
- customDatePicker2.show(currentTime.getText().toString());
- break;
- }
- }
这里传入的时间字符串参数的格式必须是正确的日期格式,否则不会显示控件。
到这一步就可以显示日期选择控件并获取选中时间了。
接下来说一下该控件用到的一些资源文件,可以通过修改这些资源文件对控件进行一些简单的修改。
首先是 res\values\colors.xml 文件,这里面定义了一些该控件用到的颜色:
- <resources>
- <color name="background">#FFFFFF</color>
- <color name="split_line">#11112233</color>
- <color name="text1">#59B29C</color>
- <color name="text2">#333333</color>
- </resources>
从上到下一次是背景颜色,分隔线颜色,标题、按钮和选中时间的字体颜色,其余字体颜色。
接下来是 res\values\strings.xml 文件,这里定义了显示的文字:
- <resources>
- <string name="cancle">取消</string>
- <string name="title">请选择时间</string>
- <string name="commit">确定</string>
- <string name="year">年</string>
- <string name="month">月</string>
- <string name="day">日</string>
- <string name="hour">时</string>
- <string name="minute">分</string>
- </resources>
具体的显示位置可自行参照图片判断。
最后是 res\values\styles.xml 文件,这里定义了该控件弹出的效果,一般可不用修改:
- <resources>
- <style name="time_dialog" parent="android:style/Theme.Dialog">
- <item name="android:windowFrame">@null</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowIsFloating">true</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowBackground">@color/background</item>
- </style>
- </resources>
推荐一个android 日期时间选择器(转)的更多相关文章
- Android日期时间选择器实现以及自定义大小
本文主要讲两个内容:1.如何将DatePicker和TimePicker放在一个dialog里面:2.改变他们的宽度: 问题1:其实现思路就是自定义一个Dialog,然后往里面同时放入DatePick ...
- android日期时间选择器
android原生的日期时间控件,因为是原生的总有其满足不了我们需求的时候,Android 手机版本那么多,用户弹出来的控件五花八门.因为项目需要,在网上找了一 些demo看了看,感觉有些写的很好,很 ...
- Android日期时间选择器DatePicker、TimePicker日期时间改变事件响应(Android学习笔记)
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- Android中实现日期时间选择器(DatePicker和TimePicker)
利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器. Dialog的Content布局文件(date_time_dialog.x ...
- 移动端lCalendar纯原生js日期时间选择器
网上找过很多的移动端基于zepto或jquery的日期选择器,在实际产品中也用过一两种,觉得都不太尽如人意,后来果断选择了H5自己的日期input表单,觉得还可以,至少不用引用第三方插件了,性能也不错 ...
- 24款最好的jQuery日期时间选择器插件
如果你正在创建一个网络表单,有很多事情你需要在你的应用程序中使用.有时您需要特别的输入,从用户的日期和时间,如发票日期,生日,交货时间,或任何其他此类信息.如果你有这样的需要,可以极大地从动态的jQu ...
- Bootstrap-datepicker日期时间选择器的简单使用
日期时间选择器 目前,bootstrap有两种日历.datepicker和datetimepicker,后者是前者的拓展. Bootstrap日期和时间组件: 使用示例: 从左到右依次是十年视图.年视 ...
- flatpickr功能强大的日期时间选择器插件
flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能, ...
- 日期时间选择器插件flatpickr
前言:在网页上需要输入时间的时候,我们可以用HTML5的inputl中的date类型.但是如下入所示,有些浏览器不支持.flatpickr这个小插件可以解决这个问题. 1.flatpickr日期时间选 ...
随机推荐
- 四. Java继承和多态2. Java super关键字
super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...
- 迭代加深搜索[codevs1004 四子连棋]
迭代加深搜索 一.算法简介 迭代加深搜索是在速度上接近广度优先搜索,空间上和深度优先搜索相当的搜索方式.由于在使用过程中引入了深度优先搜索,所以也可以当作深度优先搜索的优化方案. 迭代加深搜索适用于当 ...
- 每天一个liunx命令2之rz和sz命令
1安装命令工具包 yum install lrzsz 2sz命令发送文件到本地(send): sz filename 3rz命令本地上传文件到服务器(receive): rz 执行该命令后 ...
- linux-系统资源查看-动态
1.top 2.sar http://blog.csdn.net/hguisu/article/details/7493661 很重要 http://blog.itpub.net/24435147/ ...
- [置顶]
kubernetes资源类型--持久化存储Persistent Volume和Persistent Volume Claim
概念 存储管理跟计算管理是两个不同的问题.理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据. 为了简化对存储调度,K8S对存储的供应 ...
- UVa1347 Tour
/*----UVa1347 ---首相两边方向走不方便,可以看做:两个人同时从最左边出发,沿着两条不同路径走到终点,除了起点和中点外 其他点恰好被走过一遍 ---用dp[i][j]表示1-max(i, ...
- 修改Tomcat标题栏内容
你是否遇到过在一个OS任务栏中同时打开多个Tomcat启动程序窗口,这种情况下你会无法区分具体是哪个窗口启动哪个程序,以下方式可以实现Bat启动程序标题栏自定义. 打开Tomcat的Bin目录中,打开 ...
- IntelliJ IDEA 快捷键整理-from imooc
IntelliJ IDEA 快捷键整理-from imooc 学习了:https://www.imooc.com/learn/9241, main2, 100.for 3, new Date().so ...
- MySQL日期函数的用法几则
1.将Date类型变成年月日时分秒的形式 select date_format(claimDate,'%Y-%m-%d %H:%i:%s') as claimdate from t1 2.只要年月日的 ...
- VM虚拟机 Windows虚拟机中linux鼠标不能动怎么办
有一次vmware安装red hat linux后,进入x-windows界面,鼠标不能用,百思不得其解,因为自己的安装linux的过程中设置绝对是没有问题的啊,鼠标设置肯定是usb带滑轮,这个肯定没 ...