Android自定義DataTimePicker日期時(shí)間選擇器使用詳解
Android開發(fā)之自定義DataTimePicker(日期時(shí)間選擇器),供大家參考,具體內(nèi)容如下
最近項(xiàng)目中,要求日期和時(shí)間在同一個頁面同時(shí)選擇,這個就需要自定義了,其實(shí)所謂的自定義只不過是把時(shí)間和日期對話框組合在一起而已。
一、基本知識
1、關(guān)于日期的幾個控件:
DatePicker(日期選擇控件)
TimePicker(時(shí)間選擇控件)
DatePickerDialog(日期選擇對話框)
TimePickerDialog(時(shí)間選擇對話框)
AnalogClock(模擬時(shí)鐘控件)
DigitalClock(數(shù)字時(shí)鐘控件)
2、相關(guān)控件介紹
DatePicker 、 TimePicker 都繼承自Android.widget.FrameLayout,并且默認(rèn)展示風(fēng)格、與操作風(fēng)格也類似。DatePicker用于展示一個日期選擇控件,TimePicker用于展示一個時(shí)間選擇控件。
DatePicker常用相關(guān)屬性:
android:calendarViewShown:是否顯示日歷
android:spinnersShown:是否顯示為滾動條樣式(會同時(shí)顯示日歷和滾動條樣式上邊兩個都不設(shè)置)
android:startYear:設(shè)置可選開始年份。
android:endYear:設(shè)置可選結(jié)束年份。
android:maxDate:設(shè)置可選最大日期,以mm/dd/yyyy格式設(shè)置。
android:minDate:設(shè)置可選最小日期,以mm/dd/yyyy格式設(shè)置。
DatePicker的方法而言,除了常用獲取屬性的setter、getter方法之外,還需要特別注意一個初始化的方法init()方法,用于做DatePicker控件的初始化,并且設(shè)置日期被修改后,回調(diào)的響應(yīng)事件。此方法的簽名如下:
init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
從上面的init()方法可以看到,DatePicker被修改時(shí)響應(yīng)的事件是DatePicker.OnDateChangedListener 事件,如果要響應(yīng)此事件,需要實(shí)現(xiàn)其中的onDateChanged()方法,其中參數(shù)從簽名即可了解意思,這里不再累述。
onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
作為一個時(shí)間選擇控件來說,TimePicker需要與時(shí)間相關(guān)的getter、setter方法之外,還需要有時(shí)間被修改夠,回調(diào)的響應(yīng)事件。
TimePicker常用方法有如下幾個:
is24HourView():判斷是否為24小時(shí)制。
setIs24HourView():設(shè)置是否為24小時(shí)制顯示。
getCurrentXxx():獲取當(dāng)前時(shí)間。
setCurrentXxx():設(shè)置當(dāng)前時(shí)間。
setOnTimeChangedListener():設(shè)置時(shí)間被修改的回調(diào)方法。
TimePicker控件被修改的回調(diào)方法,通過setOnTimeChangedListener()方法設(shè)置,其傳遞一個 TimePicker.OnTimeChangedListener 接口,需要實(shí)現(xiàn)其中的onTimeChanged()方法。
二、實(shí)現(xiàn)步驟
首先,對話框的布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ? ? android:layout_width="wrap_content" ? ? android:layout_height="wrap_content" ? ? android:gravity="center" ? ? android:orientation="vertical"> ? ? <DatePicker ? ? ? ? android:id="@+id/data_picker" ? ? ? ? android:layout_width="wrap_content" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:calendarViewShown="false" /> ? ? <TimePicker ? ? ? ? android:id="@+id/timer_picker" ? ? ? ? android:layout_width="wrap_content" ? ? ? ? android:layout_height="wrap_content" /> </LinearLayout>
然后,我封裝了一個工具類:
public static void getDateTime(Context mContext, final TextView textView) { ? ? ? ? View date_time_picker = View.inflate(mContext, R.layout.date_time_picker, null); ? ? ? ? final DatePicker datePicker = (DatePicker) date_time_picker.findViewById(R.id.data_picker); ? ? ? ? final TimePicker timePicker = (TimePicker) date_time_picker.findViewById(R.id.timer_picker); ? ? ? ? timePicker.setIs24HourView(true); ? ? ? ? // ? Build ? DateTimeDialog ? ? ? ? AlertDialog.Builder builder = new AlertDialog.Builder(mContext); ? ? ? ? builder.setView(date_time_picker); ? ? ? ? builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { ? ? ? ? ? ? @Override ? ? ? ? ? ? public void onClick(DialogInterface dialog, int which) { ? ? ? ? ? ? ? ? String dateStr = datePicker.getYear() + "-" + datePicker.getMonth() + "-" + datePicker.getDayOfMonth(); ? ? ? ? ? ? ? ? int currentMinute = timePicker.getCurrentMinute(); ? ? ? ? ? ? ? ? String curMinute = ""; ? ? ? ? ? ? ? ? if (currentMinute < 10) { ? ? ? ? ? ? ? ? ? ? curMinute = "0" + currentMinute; ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? curMinute = String.valueOf(currentMinute); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? String timeStr = timePicker.getCurrentHour() + ":" + curMinute; ? ? ? ? ? ? ? ? textView.setText(dateStr + " ?" + timeStr); ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ? builder.show(); ? ? }
最后,直接調(diào)用就好了
DateUtil.getDateTime(this, tv);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android自定義DataTimePicker實(shí)例代碼(日期選擇器)
- Android中的TimePickerView(時(shí)間選擇器)的用法詳解
- Android?studio實(shí)現(xiàn)日期?、時(shí)間選擇器與進(jìn)度條
- Android仿IOS10圓盤時(shí)間選擇器
- Android仿iPhone日期時(shí)間選擇器詳解
- Android日期和時(shí)間選擇器實(shí)現(xiàn)代碼
- Android Studio時(shí)間選擇器的創(chuàng)建方法
- Android自定義View仿IOS圓盤時(shí)間選擇器
- Android開發(fā)中實(shí)現(xiàn)IOS風(fēng)格底部選擇器(支持時(shí)間 日期 自定義)
- Android時(shí)間選擇器、日期選擇器實(shí)現(xiàn)代碼
相關(guān)文章
Android 實(shí)現(xiàn)微信,微博,微信朋友圈,QQ分享的功能
這篇文章主要介紹了Android 實(shí)現(xiàn)微信,微博,微信朋友圈,QQ分享的功能的相關(guān)資料,需要的朋友可以參考下2016-12-12Android?Banner本地和網(wǎng)絡(luò)輪播圖使用介紹
大家好,本篇文章講的是Android?Banner本地和網(wǎng)絡(luò)輪播圖使用介紹,感興趣的同學(xué)趕快來看一看吧,希望本篇文章對你起到幫助2021-11-11Convert WebP to PNG using java
本文主要介紹Convert WebP to PNG using java,這里對 WebP 做了詳細(xì)說明,并講解Linux 環(huán)境下WebP 轉(zhuǎn)png格式的示例,有興趣的小伙伴可以參考下2016-08-08Android基于IJKPlayer視頻播放器簡單封裝設(shè)計(jì)
這篇文章主要介紹了Android基于IJKPlayer視頻播放器簡單封裝設(shè)計(jì),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06Android高德地圖poi檢索仿微信發(fā)送位置實(shí)例代碼
本篇文章主要介紹了Android高德地圖poi檢索仿微信發(fā)送位置實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04Android App在ViewPager中使用Fragment的實(shí)例講解
這篇文章主要介紹了Android App在ViewPager中使用Fragment的實(shí)例講解,ViewPager組件主要被用來制作滑動切換效果,需要的朋友可以參考下2016-03-03Android編程設(shè)計(jì)模式之抽象工廠模式詳解
這篇文章主要介紹了Android編程設(shè)計(jì)模式之抽象工廠模式,結(jié)合實(shí)例形式詳細(xì)分析了Android抽象工廠模式的概念、原理、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-12-12Android實(shí)現(xiàn)從activity中停止Service的方法
這篇文章主要介紹了Android實(shí)現(xiàn)從activity中停止Service的方法,結(jié)合實(shí)例形式簡單分析了Android中Service的注冊、創(chuàng)建及使用stopService停止Service的方法,需要的朋友可以參考下2016-01-01