自定义Android日期时间选择控件DateTimePickerDialog

 更新时间:2016年9月20日 19:59  点击:1698
本文章来给各位同学介绍自定义Android日期时间选择控件DateTimePickerDialog方法,有需要了解的同学不防进入参考。

Android系统提供了DatePicker、TimePicker、DatePickerDialog、TimePickerDialog控件用于日期和时间的选择和设置,但是它们都是相对独立的,不能方便的设置“yyyy-MM-dd HH:mm:ss”型日期时间,下面是使用这几种组件自定义的一个日期时间选择控件DateTimePickerDialog,可以方便的设置“yyyy-MM-dd HH:mm:ss”型日期时间,“yyyy-MM-dd”型日期和“HH:mm:ss”型时间,

代码实现:

 代码如下 复制代码

DateTimePickerDialog.java

package me.gogogogo.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import me.gogogogo.activity.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
/**
 * 日期时间选择控件
 * @author 大漠
 */
public class DateTimePickerDialog implements  OnDateChangedListener,OnTimeChangedListener{
 private DatePicker datePicker;
 private TimePicker timePicker;
 private AlertDialog ad;
 private String dateTime;
 private String initDateTime;
 private Activity activity;
 
 /**
  * 日期时间弹出选择框构
  * @param activity:调用的父activity
  */
 public DateTimePickerDialog(Activity activity)
 {
  this.activity = activity;
 }
 
 public void init(DatePicker datePicker,TimePicker timePicker)
 {
  Calendar calendar= Calendar.getInstance();
  initDateTime=calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+
    calendar.get(Calendar.DAY_OF_MONTH)+" "+
    calendar.get(Calendar.HOUR_OF_DAY)+":"+
    calendar.get(Calendar.MINUTE)+
    calendar.get(Calendar.SECOND);
  datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH), this);
  timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
  timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
 }
 
 /**
  * 弹出日期时间选择框
  * @param dateTimeTextEdite 需要设置的日期时间文本编辑框
  * @param type: 0为日期时间类型:yyyy-MM-dd HH:mm:ss
  *         1为日期类型:yyyy-MM-dd
  *         2为时间类型:HH:mm:ss
  * @return
  */
 public AlertDialog dateTimePicKDialog(final EditText dateTimeTextEdite, int type)
 {
  Calendar c = Calendar.getInstance();
  switch (type) {
  case 1:
   new DatePickerDialog(activity,
     new DatePickerDialog.OnDateSetListener() {
      public void onDateSet(DatePicker datePicker, int year, int monthOfYear,
        int dayOfMonth) {
       Calendar calendar = Calendar.getInstance();
       calendar.set(datePicker.getYear(), datePicker.getMonth(),
         datePicker.getDayOfMonth());
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       dateTime=sdf.format(calendar.getTime());
       dateTimeTextEdite.setText(dateTime);
      }
     },
     c.get(Calendar.YEAR),
     c.get(Calendar.MONTH),
     c.get(Calendar.DATE)).show();
   return null;
  case 2:
   new TimePickerDialog(activity,
     new TimePickerDialog.OnTimeSetListener() {
      public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
       Calendar calendar = Calendar.getInstance();
       calendar.set(Calendar.YEAR, Calendar.MONTH,
         Calendar.DAY_OF_MONTH, timePicker.getCurrentHour(),
         timePicker.getCurrentMinute());
       SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
       dateTime=sdf.format(calendar.getTime());
       dateTimeTextEdite.setText(dateTime);
      }
     },
     c.get(Calendar.HOUR_OF_DAY),
     c.get(Calendar.MINUTE),
     true).show();
   return null;
  default:
   LinearLayout dateTimeLayout  = (LinearLayout) activity.getLayoutInflater().inflate(R.layout.datetime, null);
   datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
   timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);
   init(datePicker,timePicker);
   timePicker.setIs24HourView(true);
   timePicker.setOnTimeChangedListener(this);
     
   ad = new AlertDialog.Builder(activity).setIcon(R.drawable.datetimeicon).setTitle(initDateTime).setView(dateTimeLayout).setPositiveButton("设置",
       new DialogInterface.OnClickListener()
       {
        public void onClick(DialogInterface dialog,
          int whichButton)
        {
         dateTimeTextEdite.setText(dateTime);
        }
       }).setNegativeButton("取消",
       new DialogInterface.OnClickListener()
       {
        public void onClick(DialogInterface dialog,
          int whichButton)
        {
         dateTimeTextEdite.setText("");
        }
       }).show();
   
   onDateChanged(null, 0, 0, 0);
   return ad;
  }
 }
 
 public void onTimeChanged(TimePicker view, int hourOfDay, int minute)
 {
  onDateChanged(null, 0, 0, 0);
 }

 public void onDateChanged(DatePicker view, int year, int monthOfYear,
   int dayOfMonth)
 {
  Calendar calendar = Calendar.getInstance();

  calendar.set(datePicker.getYear(), datePicker.getMonth(),
    datePicker.getDayOfMonth(), timePicker.getCurrentHour(),
    timePicker.getCurrentMinute());
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  dateTime=sdf.format(calendar.getTime());
  ad.setTitle(dateTime);
 }
 
}

布局文件:

datetime.xml

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <DatePicker
     android:id="@+id/datepicker"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" />
 <TimePicker
     android:id="@+id/timepicker"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" />
</LinearLayout>

使用实例:

MainActivity.java

 代码如下 复制代码

package me.gogogogo.activity;

import me.gogogogo.util.DateTimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.app.Activity;

public class MainActivity extends Activity {
 private EditText date;
 private EditText time;
 private EditText datetime;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        datetime = (EditText) this.findViewById(R.id.datetime);
        date = (EditText) this.findViewById(R.id.date);
        time = (EditText) this.findViewById(R.id.time);
       
        datetime.setOnClickListener(new DateTimeOnClick());
        date.setOnClickListener(new DateOnClick());
        time.setOnClickListener(new TimeOnClick());
    }
   
    private final class DateTimeOnClick implements OnClickListener{
  public void onClick(View v) {
   DateTimePickerDialog dateTimePicKDialog = new DateTimePickerDialog(
     MainActivity.this);
   dateTimePicKDialog.dateTimePicKDialog(datetime, 0);
  }
    }
   
    private final class DateOnClick implements OnClickListener{
     public void onClick(View v) {
      DateTimePickerDialog dateTimePicKDialog = new DateTimePickerDialog(
     MainActivity.this);
   dateTimePicKDialog.dateTimePicKDialog(date, 1);
  }
    }
   
    private final class TimeOnClick implements OnClickListener{
     public void onClick(View v) {
      DateTimePickerDialog dateTimePicKDialog = new DateTimePickerDialog(
     MainActivity.this);
   dateTimePicKDialog.dateTimePicKDialog(time, 2);
  }
    }
}

设置之后日期时间控件效果如下

点击查看原图

本文章来给各位朋友介绍Android打包apk报错:Errors occurred during the build 解决办法,碰到此问题的同学不防进入参考。

   Android应用打包apk时报错:Errors occurred during the build,如图:

点击查看原图

       解决方法:选中Android应用项目,右键选则“Properties”  ,“Builders”中只勾选“Android Package Builder”,如图:

点击查看原图

昨天有一朋友问我有没有办法设置Android ImageView点击时的样式呢,后来我们到论坛问了朋友如下说


imageview.setXXX可以设置
setBackgroundResource背景,
布局setLayoutParams
还有setScaleType ,
源图片是无法改变的.不用担心.如果图片旋转,也只有生成另一个Bitmap

解决办法

首先,再res/drawable文件夹下创建一个xml文件,命名为logoutimage.xml,在该文件中实该图片在点击前和点击时的图片,代码如下:

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 默认图片 --> 
    <item android:state_pressed="false" 
        android:drawable="@drawable/logout2" />
    <!-- 点击时图片 --> 
    <item android:state_pressed="true" 
        android:drawable="@drawable/logout1" /> 
</selector>

然后在ImageView的src属性中引用该文件,代码如下:

 代码如下 复制代码

<ImageButton
   android:src="@drawable/logoutimage"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   />

更多情况

 代码如下 复制代码

<!-- 默认图片 -->   
<item android:drawable="@drawable/img1" />
 
<!-- 没有焦点时的图片 -->   
<item android:state_window_focused="false"  
      android:drawable="@drawable/img2" />    

 <!--获得焦点时的图片  -->   
<item android:state_focused="true"    
      android:drawable="@drawable/img3" />
 
 <!--选中时的图片  -->   
 <item android:state_selected="true"    
      android:drawable="@drawable/img4" />
 
 <!-- 触摸模式下单击时的图片 -->   
 <item android:state_focused="false"
    android:state_pressed="true"    
    android:drawable="@drawable/img5" />  
 
 <!-- 非触摸模式下获得焦点并单击时的图片 -->   
 <item android:state_focused="true"
    android:state_pressed="true"    
    android:drawable= "@drawable/img6" />

方法这些了,大家可看看如下效果图

Android ImageView点击样式

现在使用安卓系统的手机用户大批大批的,下面我来以htc手机为例来介绍android使用技巧及一些常见问题总结,大家可参考。

解决信号门


*#*#4636#*#*更改网络模式为GSM;

设置->无线和网络->移动网络设置->网络模式->仅 GSM


自定义铃声、提示音


默认情况下,只能只用系统自带的一些铃声和提示音,怎么使用自己下载的个性化铃声了,很简单:

一、手动方式

在SD卡里建立 “ringtones”(来电铃声)”alarms”(闹钟铃声) “notifications”(短信通知铃声),把你不同用途的铃声放到不同的文件夹下手机就可以自动找到。

用这个方法设置短信铃声的话需要,进入“短信”——MENU——通知设置,选择通知,选取自己的个性铃声,或在铃声设置里直接点取设。

二、貌似91手机助手有界面化的设置办法。

重启后桌面图标变小机器人解决办法


我的htc手机重启后,装在SD卡里的程序桌面图标快捷方式就会变成小机器人,经过查找原因是:
SD卡作为磁盘在linux里挂在(mount)顺序在系统启动之后,所以当时是无法读取到图标的。

解决办法有两种种:

方法1、更换皮肤

更换一下“皮肤”,届时系统会自动重新读取图标的。

方法2、卸载/重新安装存储卡

别怕,不是要拆机器,通过软操作实现:设置->手机和存储卡->卸载存储卡->安装存储卡。

这是后来才发现的,也是最好的方法。

事实证明,这个方法是不行的


android phone Drivers-我的htc手机驱动程序

安装官方的 rsync 包要148Mb,并且安装过程有些功能无法安装,所以我把它从包里提取出来,以备不时之需。
实现方法为:正常安装后用驱动精灵备份驱动的方法,所以比较的安全和完整。

能用来做什么?

usb文件传输、Internet共享(手机、pc双向均可)

一个记录android+java环境变量配置备忘教程,各位同学可参考,希望对文章对你有所帮助。
android:
 
变量 android

值    C:/Program Files/Android/android-sdk/platform-tools;C:/Program Files/Android/android-sdk/tools;C:/Program Files/Android/android-sdk;

 

变量PATH中加入:

 

%SystemRoot%/System32/Wbem;%android%;

JAVA:

 

变量:JAVA_HOME
值 C:/Program Files/Java/jdk1.6.0_10
变量:CLASSPATH
值 .;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;

PATH中加入:

 

 %SystemRoot%/System32/Wbem;%android%;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;
测试ANDROID成不成功
运行CMD
adb
[!--infotagslink--]

相关文章

  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • C#创建自定义控件及添加自定义属性和事件使用实例详解

    这篇文章主要给大家介绍了关于C#创建自定义控件及添加自定义属性和事件使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件

    这篇文章主要介绍了vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下...2021-02-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • 自定义jquery模态窗口插件无法在顶层窗口显示问题

    自定义一个jquery模态窗口插件,将它集成到现有平台框架中时,它只能在mainFrame窗口中显示,无法在顶层窗口显示. 解决这个问题的办法: 通过以下代码就可能实现在顶层窗口弹窗 复制代码 代码如下: $(window.top.documen...2014-05-31
  • 自定义feignClient的常见坑及解决

    这篇文章主要介绍了自定义feignClient的常见坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-20
  • pytorch 自定义卷积核进行卷积操作方式

    今天小编就为大家分享一篇pytorch 自定义卷积核进行卷积操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-06
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • PHP YII框架开发小技巧之模型(models)中rules自定义验证规则

    YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规则后才能被提交,可以很有效地保证...2015-11-24
  • jquery自定义插件开发之window的实现过程

    这篇文章主要介绍了jquery自定义插件开发之window的实现过程的相关资料,需要的朋友可以参考下...2016-05-09
  • PowerShell中使用Get-Date获取日期时间并格式化输出的例子

    这篇文章主要介绍了PowerShell中使用Get-Date获取日期时间并格式化输出的例子,本文讲解了直接调用Get-Date、在Write-Host中使用Get-Date、格式化输出的方法,需要的朋友可以参考下...2020-06-30
  • Vue 组件复用多次自定义参数操作

    这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
  • C#自定义事件监听实现方法

    这篇文章主要介绍了C#自定义事件监听实现方法,涉及C#事件监听的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • element中TimePicker时间选择器禁用部分时间(显示禁用到分钟)

    这篇文章主要介绍了element中TimePicker时间选择器禁用部分时间(显示禁用到分钟),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-16
  • 使用BindingResult 自定义错误信息

    这篇文章主要介绍了使用BindingResult 自定义错误信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-23
  • 解决element DateTimePicker+vue弹出框只显示小时

    这篇文章主要介绍了解决element DateTimePicker+vue弹出框只显示小时,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-16
  • 在Vue中获取自定义属性方法:data-id的实例

    这篇文章主要介绍了在Vue中获取自定义属性方法:data-id的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-09