项目开发中 如果你需要一个年月日时分秒类型时间选择器 用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);

}

效果图

});

xml布局效果

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

喜欢得可以点个赞

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

android 年月日时分秒控件,Android 年月日时分秒时间选择器相关推荐

  1. 视频教程-Android Material Design 新控件-Android

    Android Material Design 新控件 刘志远,北京邮电大学硕士研究生, 北京育华志远科技有限公司创始人, 育华志远教育品牌负责人,育华志远课程体系打造者. 率领团队为互联网行业培训千 ...

  2. android点击隐藏控件,Android编程实现点击EditText之外的控件隐藏软键盘功能

    本文实例讲述了Android编程实现点击EditText之外的控件隐藏软键盘功能.分享给大家供大家参考,具体如下: 工具类 ... public static void hideKeyboard(Co ...

  3. android 除了webview 浏览器控件,android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器...

    前面的文章的OAuth认证过程在获取oauth_verifier码是是通过调用android系统带的浏览器进行用户授权认证的, 具体见:android开发我的新浪微博客户端-用户授权页面功能篇(3.2 ...

  4. android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...

  5. android中互斥的控件,Android控件之Radiobutton与RadioGroup

    RadioButton 是一个单选控件,在一个RadioGroup中,各个RadioButton是互斥的 XML文件: xmlns:tools="http://schemas.android ...

  6. android自定义选年控件,Android精美日历控件CalendarView自定义使用完全解析

    项目github地址 此框架采用组合的方式,各个模块互相独立,可自由采用各种提供的控件组合,完全自定义自己需要的UI,周视图和月视图可通过简单自定义任意自由绘制,不怕美工提需求!!!下面教程将介绍如何 ...

  7. android bind 自动声明控件,Android注解神器ButterKnife使用说明

    阅读本文大概需要5分钟 前言 如果你还在一行一行的手写findViewById的话,只能证明你对新技术的敏感度太差,间接地暴露了你不善于接受新事物的性格特征,太过于因循守旧.按部就班,这对于一个程序员 ...

  8. android中翻页控件,Android GridView控件分页自定义

    上一篇:Android GridView控件自定义中,我们自定义了Android GridView控件. 包名解释: com.yaomei.activity.adapter   DEMO使用到的自定义 ...

  9. java界面日期选择控件,JavaFX界面设计之时间选择器(1)

    本章我们主要介绍javafX时间选择器的使用,描述了DatePicker控件的基本特性. javaFX的DatePicker控件可以让我们从一个给定的日历中选择一天,主要用于网站或应用中需要用户输入一 ...

最新文章

  1. python xpath语法-Python爬虫之XPath语法
  2. postgresql网站翻译
  3. const 和 static 的作用
  4. Debug pycharm: Error running *.py, cannot run program, No such file or pragram
  5. phpcms mysql配置文件_PhpCms系统设置:config.inc.php文件配置说明
  6. r语言中正定矩阵由于误差不正定_R语言之数据处理(一)
  7. Python之subprocess模块
  8. oracle怎么自定义排序,查询时怎么根据一个自定义的函数来进行排序
  9. InstallShield Build错误:Internal build error 6041
  10. 怎么加入链接,可以让微信浏览器直接提示跳出另一个浏览器查看
  11. 夜弦网页游戏专用浏览器(支持最小化隐藏后台多开挂机)
  12. 福昕pdf阅读器,怎么将pdf文件中的某一页,提取出来,即分页保存?
  13. 4g通信模块怎么连接sim卡_SIM卡GPRS模块知识详解 浅谈SIM卡GPRS之原理模块
  14. fcm基本原理_FCM聚类算法介绍
  15. Activity5概述
  16. django ajax jquery csrf_exempt 设置favicon.ico
  17. [C++] 开灯问题(两个思路)
  18. 【免费培训】腾讯WeTestTesterHome WorkShop | 一起学压测
  19. VScode前端npm i 依赖后源代码管理器出现5k+更改文件解决办法
  20. Pytorch中的detach用法

热门文章

  1. 数据库更改到Java环境中实现可持续和平
  2. Spring集成–强大的拆分器聚合器
  3. JavaFX:太空侵略者在175 LOC以下
  4. Java:检查器框架
  5. Spring MVC错误处理示例
  6. Spring MVC和JQuery用于Ajax表单验证
  7. 文档中快速输入日期时间的方法
  8. 工作占用了太多私人时间_下班后还要被逼谈工作,我们应该如何处理?
  9. 怎样用C语言实现五子棋,C语言实现五子棋
  10. python dump函数用法_Python中json库的load和dump函数