《Android开发卷——自定义日期选择器(三)》
继
《Android开发卷——自定义日期选择器(一)》:http://blog.csdn.net/chillax_li/article/details/19047913
《Android开发卷——自定义日期选择器(二)》:http://blog.csdn.net/chillax_li/article/details/19172899
之后,在之前的基础上添加了两个按钮的单击事件
public class TestDialog extends Dialog { private Context context;
private int style; private NumberPicker np1,np2,np3;
private static String str1 = "1999";
private static String str2 = "1";
private static String str3 = "1"; public TestDialog(Context context) {
super(context);
this.context = context;
} public TestDialog(Context context, int style) {
super(context);
this.context = context;
this.style = style;
} @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.dialog); np1 = (NumberPicker) findViewById(R.id.np1);
np2 = (NumberPicker) findViewById(R.id.np2);
np3 = (NumberPicker) findViewById(R.id.np3); np1.setMaxValue(2299);
np1.setMinValue(1970);
np1.setValue(1999);
np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override
public void onValueChange(NumberPicker arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
str1 = np1.getValue() + "";
if (Integer.parseInt(str1) % 4 == 0
&& Integer.parseInt(str1) % 100 != 0
|| Integer.parseInt(str1) % 400 == 0) {
if(str2.equals("1")||str2.equals("3")||str2.equals("5")||str2.equals("7")||str2.equals("8")||str2.equals("10")||str2.equals("12")){
np3.setMaxValue(31);
np3.setMinValue(1);
}else if(str2.equals("4")||str2.equals("6")||str2.equals("9")||str2.equals("11")){
np3.setMaxValue(30);
np3.setMinValue(1);
}else{
np3.setMaxValue(29);
np3.setMinValue(1);
} } else {
if(str2.equals("1")||str2.equals("3")||str2.equals("5")||str2.equals("7")||str2.equals("8")||str2.equals("10")||str2.equals("12")){
np3.setMaxValue(31);
np3.setMinValue(1);
}else if(str2.equals("4")||str2.equals("6")||str2.equals("9")||str2.equals("11")){
np3.setMaxValue(30);
np3.setMinValue(1);
}else{
np3.setMaxValue(28);
np3.setMinValue(1);
}
} }
}); np2.setMaxValue(12);
np2.setMinValue(1);
np2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override
public void onValueChange(NumberPicker arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
str2 = np2.getValue()+"";
if(str2.equals("1")||str2.equals("3")||str2.equals("5")||str2.equals("7")||str2.equals("8")||str2.equals("10")||str2.equals("12")){
np3.setMaxValue(31);
np3.setMinValue(1);
}else if(str2.equals("4")||str2.equals("6")||str2.equals("9")||str2.equals("11")){
np3.setMaxValue(30);
np3.setMinValue(1);
}else{
if (Integer.parseInt(str1) % 4 == 0
&& Integer.parseInt(str1) % 100 != 0
|| Integer.parseInt(str1) % 400 == 0) {
np3.setMaxValue(29);
np3.setMinValue(1);
} else {
np3.setMaxValue(28);
np3.setMinValue(1);
}
}
}
}); np3.setMaxValue(31);
np3.setMinValue(1);
np3.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override
public void onValueChange(NumberPicker arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
str3 = np3.getValue()+"";
}
}); // 设置返回按钮事件和文本
if (backButtonText != null) {
Button bckButton = ((Button)findViewById(R.id.dialog_back));
bckButton.setText(backButtonText); if (backButtonClickListener != null) {
bckButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
backButtonClickListener.onClick(new TestDialog(getContext()), DialogInterface.BUTTON_NEGATIVE);
dismiss();
}
});
}
} else {
findViewById(R.id.dialog_back).setVisibility(View.GONE);
} // 设置确定按钮事件和文本
if (confirmButtonText != null) {
Button cfmButton = ((Button)findViewById(R.id.dialog_confirm));
cfmButton.setText(confirmButtonText); if (confirmButtonClickListener != null) {
cfmButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
confirmButtonClickListener.onClick(new TestDialog(getContext()), DialogInterface.BUTTON_NEGATIVE);
dismiss();
}
});
}
} else {
findViewById(R.id.dialog_confirm).setVisibility(View.GONE);
}
} private String backButtonText; // 对话框返回按钮文本
private String confirmButtonText; // 对话框确定文本 // 对话框按钮监听事件
private DialogInterface.OnClickListener backButtonClickListener,
confirmButtonClickListener; /**
* 设置back按钮的事件和文本
*
* @param backButtonText
* @param listener
* @return
*/
public void setBackButton(String backButtonText,
DialogInterface.OnClickListener listener) {
this.backButtonText = backButtonText;
this.backButtonClickListener = listener;
} /**
* 设置确定按钮事件和文本
*
* @param negativeButtonText
* @param listener
* @return
*/
public void setConfirmButton(String confirmButtonText,
DialogInterface.OnClickListener listener) {
this.confirmButtonText = confirmButtonText;
this.confirmButtonClickListener = listener;
} public static String getDate(){
return str1+"-"+str2+"-"+str3;
} @Override
public void show() {
// TODO Auto-generated method stub
super.show();
}
}
项目地址:http://download.csdn.net/detail/chillax_li/6923505
在这里有个问题要注意:就是切勿误删values-v11和values-v14这两个文件夹,因为这两个表示Android 3.*以上的样式,如果误删了,样式会变得很丑
(正常情况)(误删文件夹情况,NumPicker样式被改变,使用android
2.*的旧版本)
尊重原创,转载请注明出处:http://blog.csdn.net/chillax_li/article/details/19212895
《Android开发卷——自定义日期选择器(三)》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- 从 VLAN 到 IPVLAN: 聊聊虚拟网络设备及其在云原生中的应用
简介: 由于这篇文章真的很长,大量的篇幅在讲述内核的实现,如果你对这部分不感兴趣,那么在建议你在看完第一部分的三个问题后,思考一下,然后直接跳转到我们对问题的回答. 作者:张伟(谢石) 由于这篇文 ...
- 解析 RocketMQ 业务消息--“顺序消息”
简介: 本篇将继续业务消息集成的场景,从功能原理.应用案例.最佳实践以及实战等角度介绍 RocketMQ 的顺序消息功能. 作者:绍舒 引言 Apache RocketMQ 诞生至今,历经十余年大 ...
- 系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术
简介:本篇以 first contact (通信两端建立首个连接) 场景为例,介绍 SMC-R 通信流程. 文/龙蜥社区高性能网络SIG 一.引言 通过上一篇文章 <系列解读SMC-R:透 ...
- 从 RxJS 到 Flink:如何处理数据流?
简介: 前端开发的本质是什么?响应式编程相对于 MVVM 或者 Redux 有什么优点?响应式编程的思想是否可以应用到后端开发中?本文以一个新闻网站为例,阐述在前端开发中如何使用响应式编程思想:再以计 ...
- dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用
本文告诉大家如何在 UOS 国产系统上开始使用 MonoDevelop 开发,通过创建 GTK# 应用,进入界面开发的第一步 在开始之前需要小伙伴先安装好 MonoDevelop 工具 安装完成之后, ...
- k8s之dns问题
问题1: 描述:pod新建好后,无法ping通域名(无论是外网域名还是内网域名),但是可以ping通IP(包含外网IP和内网IP),不包括kube-dns的IP,和pod同一网段IP可以ping通 # ...
- 深入 Django 模型层:数据库设计与 ORM 实践指南
title: 深入 Django 模型层:数据库设计与 ORM 实践指南 date: 2024/5/3 18:25:33 updated: 2024/5/3 18:25:33 categories: ...
- 一、Doris演进史
Apache Doris -- 为分析而生 Doris发展历程: Doris发展比较重要的关键节点与事件 #2008 - Doris1 :「筑巢引凤」的重要基石 早年,百度最主要的收入来源是广告.广告 ...
- R1_ES知识图谱
业务量增加,优化..优化... 学习... 学习..... 阮一鸣,eBay Pronto 平台技术负责人,管理了 eBay 内部上百个 Elasticsearch 集群,数据规模超过 4000 节点 ...
- 1.13~1.14&&放假寄
1.13 3点就放了,手机在机房就能拿到,我为了给手机充会电又多留了一会(事实证明这挺对的) 因为我们是 化微机的班,老师收手机都放在一个箱子里,要有人负责把剩下的手机搬到教室,我走得晚还被当成免费劳 ...