Android日期时间改变控件PICKER

合集下载

时间设置控件讲解

时间设置控件讲解

Date now = new Date(); DateFormat d5 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateForma t.FULL); //显示日期,周,时间(精确到秒) DateFormat d6 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateForm at.LONG); //显示日期。时间(精确到秒) DateFormat d8 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFo rmat.MEDIUM); //显示日期,时间(精确到分) DateFormat.format(now);//对时间进行格式化
});
TimePicker的使用
时间设置控件讲解
TimePicker与DatePicker的用法相同,获取内容方法不 同。以下为TimePicker的主要方法:
方法名 setCurrentMinute(Integer currentMinute)
getCurrentMinute() setEnabled(boolean enabled) setIs24HourView(boolean a)
象进行操作,下面是主要的操作方法:
方法名 public int getDayOfMonth () public int getMonth () public int getYear () public void setEnabled (boolean enabled) public void updateDate (int year, int monthOfYear, int dayOfMonth)

Android自定义控件之日期选择控件使用详解

Android自定义控件之日期选择控件使用详解

Android⾃定义控件之⽇期选择控件使⽤详解Android⽇期选择控件效果如下:调⽤的代码:@OnClick(R.id.btn0)public void btn0() {final AlertDialog dialog = new AlertDialog.Builder(context).create();dialog.show();Window window = dialog.getWindow();window.setContentView(yout.dialog_change_date);window.setBackgroundDrawable(new ColorDrawable(0x00000000)); // 处理5.0以上对话框的⽩边问题window.setGravity(Gravity.BOTTOM);final DatePickerView datePickerView = (DatePickerView) window.findViewById(R.id.datePickerView);//打开页⾯时需要选中的⽇期 TODOdatePickerView.setDate(2015, 5, 11);// datePickerView.setDate(birthdayArray[0], birthdayArray[1], birthdayArray[2]);final int[] birthdayArray = new int[3];datePickerView.addOnSelectedChangingListener(new DatePickerView.OnSelectedChangedListener() {@Overridepublic void OnSelectedChanged(int[] oldValue, int[] newValue) {birthdayArray[0] = newValue[0];birthdayArray[1] = newValue[1];birthdayArray[2] = newValue[2];}});window.findViewById(Cancel).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {dialog.dismiss();}});window.findViewById(OK).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {dialog.dismiss();btn0.setText(birthdayArray[0] + "年" + birthdayArray[1] + "⽉" + birthdayArray[2] + "⽇"); }});}1.WheelView 源码(有修改)2.xml布局⽂件<?xml version="1.0" encoding="utf-8"?><!--widget_date_picker.xml--><!--注意修改页⾯⾃定义控件的包名--><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><de.bvb.rxdemo.widget.DateSelectWidget.wheelview.WheelViewandroid:id="@+id/wheelViewYear"android:layout_width="0dp"android:layout_height="match_parent"android:layout_gravity="center"android:layout_weight="1"/><de.bvb.rxdemo.widget.DateSelectWidget.wheelview.WheelViewandroid:id="@+id/wheelViewMonth"android:layout_width="0dp"android:layout_height="match_parent"android:layout_gravity="center"android:layout_weight="1"/><de.bvb.rxdemo.widget.DateSelectWidget.wheelview.WheelViewandroid:id="@+id/wheelViewDay"android:layout_width="0dp"android:layout_height="match_parent"android:layout_gravity="center"android:layout_weight="1"/></LinearLayout><?xml version="1.0" encoding="utf-8"?><!--dialog_change_date.xml--><!--注意修改页⾯⾃定义控件的包名--><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/transparent"android:gravity="bottom"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/white"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="48dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tvCancel"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="#F9F9F9"android:gravity="center"android:text="取消"android:textColor="#43AAFC"/><Viewandroid:layout_width="1px"android:layout_height="match_parent"android:background="#D7D7D7"/><TextViewandroid:id="@+id/tvOK"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="#F9F9F9"android:gravity="center"android:text="确定"android:textColor="#43AAFC"/></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1px"android:background="#D7D7D7"/><de.bvb.rxdemo.widget.DateSelectWidget.DatePickerViewandroid:id="@+id/datePickerView"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout></LinearLayout>3.java⽂件package de.bvb.rxdemo.widget.DateSelectWidget;import android.content.Context;import android.util.AttributeSet;import youtInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import de.bvb.rxdemo.R;import de.bvb.rxdemo.widget.DateSelectWidget.wheelview.OnWheelChangedListener;import de.bvb.rxdemo.widget.DateSelectWidget.wheelview.OnWheelScrollListener;import de.bvb.rxdemo.widget.DateSelectWidget.wheelview.WheelView;import de.bvb.rxdemo.widget.DateSelectWidget.wheelview.adapter.AbstractWheelTextAdapter1; public class DatePickerView extends LinearLayout {private static final int YEAR_MIN = 1950;private static final int YEAR_MAX = 2020;private int year = YEAR_MIN;private int month = 1;private int day = 1;private ArrayList<Integer> yearList = new ArrayList<>(YEAR_MAX - YEAR_MIN + 1);private ArrayList<Integer> monthList = new ArrayList<>(12);private ArrayList<Integer> dayList = new ArrayList<>(31);private DateTextAdapter yearAdapter;private DateTextAdapter monthAdapter;private DateTextAdapter dayAdapter;private Context context;private WheelView wheelViewYear;private WheelView wheelViewMonth;private WheelView wheelViewDay;public DatePickerView(Context context) {this(context, null);}public DatePickerView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public DatePickerView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);this.context = context;init();}private void init() {for (int i = YEAR_MIN; i < YEAR_MAX + 1; i++) {yearList.add(i);}for (int i = 1; i < 13; i++) {monthList.add(i);}for (int i = 1; i < 32; i++) {dayList.add(i);}LayoutInflater.from(context).inflate(yout.widget_date_picker, this);// View.inflate(context, yout.widget_date_picker, this);wheelViewYear = (WheelView) findViewById(R.id.wheelViewYear);wheelViewMonth = (WheelView) findViewById(R.id.wheelViewMonth);wheelViewDay = (WheelView) findViewById(R.id.wheelViewDay);wheelViewYear.setCyclic(true);// 可循环滚动wheelViewMonth.setCyclic(true);// 可循环滚动wheelViewDay.setCyclic(true);// 可循环滚动yearAdapter = new DateTextAdapter(context);monthAdapter = new DateTextAdapter(context);dayAdapter = new DateTextAdapter(context);yearAdapter.setList(yearList);monthAdapter.setList(monthList);dayAdapter.setList(dayList);wheelViewYear.setViewAdapter(yearAdapter);wheelViewMonth.setViewAdapter(monthAdapter);wheelViewDay.setViewAdapter(dayAdapter);wheelViewYear.addChangingListener(new OnWheelChangedListener() {@Overridepublic void onChanged(WheelView wheel, int oldValue, int newValue) {year = YEAR_MIN + newValue;int days = calcDay(year, month); // days=28dayList = getDayList(days);dayAdapter.setList(dayList);if (day > days) {dayAdapter.currentIndex = days - 1;wheelViewDay.setCurrentItem(dayAdapter.currentIndex);} else {dayAdapter.currentIndex = day - 1; // day = 30}if (onSelectedChangedListener != null) {onSelectedChangedListener.OnSelectedChanged(parseInt2Array(YEAR_MIN + oldValue, month, day), getSelectDate()); }}});wheelViewMonth.addChangingListener(new OnWheelChangedListener() {@Overridepublic void onChanged(WheelView wheel, int oldValue, int newValue) {month = 1 + newValue;int days = calcDay(year, month); // days=28dayList = getDayList(days);dayAdapter.setList(dayList);if (day > days) {dayAdapter.currentIndex = days - 1;wheelViewDay.setCurrentItem(dayAdapter.currentIndex);} else {dayAdapter.currentIndex = day - 1; // day = 30}if (onSelectedChangedListener != null) {onSelectedChangedListener.OnSelectedChanged(parseInt2Array(year, 1 + oldValue, day), getSelectDate()); }}});wheelViewDay.addChangingListener(new OnWheelChangedListener() {@Overridepublic void onChanged(WheelView wheel, int oldValue, int newValue) {day = 1 + newValue;if (onSelectedChangedListener != null) {onSelectedChangedListener.OnSelectedChanged(parseInt2Array(year, month, oldValue + 1), getSelectDate()); }}});wheelViewYear.addScrollingListener(onWheelScrollListener);wheelViewMonth.addScrollingListener(onWheelScrollListener);wheelViewDay.addScrollingListener(onWheelScrollListener);}OnWheelScrollListener onWheelScrollListener = new OnWheelScrollListener() {@Overridepublic void onScrollingStarted(WheelView wheel) {}@Overridepublic void onScrollingFinished(WheelView wheel) {setTextViewStyle();}};private void setTextViewStyle() {setTextViewSize(year + "", yearAdapter);setTextViewSize(month + "", monthAdapter);setTextViewSize(day + "", dayAdapter);}private void setTextViewSize(String currentItemText, AbstractWheelTextAdapter1 adapter) {ArrayList<View> arrayList = adapter.getTextViews();int size = arrayList.size();String currentText;TextView textView;boolean current;for (int i = 0; i < size; i++) {textView = (TextView) arrayList.get(i);currentText = textView.getText().toString();current = currentItemText.equals(currentText);textView.setTextColor(current ? adapter.selected_text_color : adapter.un_selected_text_color);textView.setTextSize(current ? adapter.selected_text_size : adapter.un_selected_text_size);}}/*** 设置控件的初始值** @param year* @param month* @param day*/public void setDate(int year, int month, int day) {//验证合法性if (year > YEAR_MAX || year < YEAR_MIN) {year = YEAR_MIN;// throw new RuntimeException("年份必须在[" + YEAR_MIN + "," + YEAR_MAX + "]之间");}if (month > 12 || month < 1) {month = 1;// throw new RuntimeException("⽉份份必须在[" + 1 + "," + 12 + "]之间");}final int days = calcDay(year, month);if (day > days || day < 1) {day = 1;// throw new RuntimeException("⽇期份必须在[" + 1 + "," + days + "]之间");}this.year = year;this.month = month;this.day = day;yearAdapter.currentIndex = DatePickerView.this.year - YEAR_MIN;monthAdapter.currentIndex = DatePickerView.this.month - 1;dayAdapter.currentIndex = DatePickerView.this.day - 1;wheelViewYear.setCurrentItem(yearAdapter.currentIndex);wheelViewMonth.setCurrentItem(monthAdapter.currentIndex);wheelViewDay.setCurrentItem(dayAdapter.currentIndex);}public void addOnSelectedChangingListener(OnSelectedChangedListener onSelectedChangedListener) { this.onSelectedChangedListener = onSelectedChangedListener;}private OnSelectedChangedListener onSelectedChangedListener;public interface OnSelectedChangedListener {void OnSelectedChanged(int[] oldValue, int[] newValue);}private int[] parseInt2Array(int year, int month, int day) {return new int[]{year, month, day};}private int[] getSelectDate() {return new int[]{year, month, day};}private ArrayList<Integer> getDayList(int days) {if (days <= 0) {return null;}ArrayList<Integer> list = new ArrayList(days);for (int i = 1; i < days + 1; i++) {list.add(i);}return list;}private int calcDay(int year, int month) {int days = 0;switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:days = 31;break;case 4:case 6:case 9:case 11:days = 30;break;case 2:days = (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) ? 29 : 28;break;}return days;}private class DateTextAdapter extends AbstractWheelTextAdapter1 {ArrayList<Integer> list;public DateTextAdapter(Context context) {super(context, yout.simple_list_item_1);// super(context, yout.item_birth_year);// setItemTextResource(R.id.tempValue);// item_birth_year.xml 内容如下// <?xml version="1.0" encoding="utf-8"?>// <LinearLayout xmlns:android="/apk/res/android"// android:layout_width="match_parent"// android:layout_height="35dip"// android:gravity="center"// android:orientation="horizontal">// <TextView// android:id="@+id/tempValue"// android:layout_width="match_parent"// android:layout_height="match_parent"// android:gravity="center"// android:textColor="#ffff0000"/>// </LinearLayout>}public void setList(ArrayList<Integer> list) {this.list = list;notifyDataChangedEvent();}@Overrideprotected CharSequence getItemText(int index) {return list == null ? "" : String.valueOf(list.get(index));}@Overridepublic int getItemsCount() {return list == null ? 0 : list.size();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

TimePicker时间控件的使用方法

TimePicker时间控件的使用方法

Timepicker 的使用方法在Android开发中,我们可以非常方便地使用Android系统自带的时间控件TimePicker,利用TimePicker,我们可以让用户输入合法的时间格式,下面我就来简单介绍一个使用这个时间控件的例子。

public class TestProActivity extends Activity {/** Called when the activity is first created. */private Button bt;private TextView tv;private TimePicker tp;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);TPDemo();}public void TPDemo(){t his.tp=(TimePicker)findViewById(R.id.timePicker1);t his.tp.setIs24HourView(false);//是否显示24小时制?默认false->显示AMPM ,改为ture 则不显示AM PM//this.tp.setCurrentHour(6);//this.tp.setCurrentMinute(20); //设置显示时间为6:20 t his.tp.setOnTimeChangedListener(tpLis); //时间改变时触发t =(TextView)findViewById(R.id.textView1);t his.bt=(Button)findViewById(R.id.button1);t his.bt.setOnClickListener(b1Lis);}//时间改变后执行的内容,用两种方式显示在tv上private OnTimeChangedListener tpLis=new OnTimeChangedListener() { p ublic void onTimeChanged(TimePicker view, int hourOfDay, int minute){tv.setText("[" + hourOfDay + ":" + minute + "]" + "["+view.getCurrentHour() + ":" + view.getCurrentMinute()+ "]");}};//单击按钮后执行的内容,显示时间在标题上private OnClickListener b1Lis=new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubsetTitle(tp.getCurrentHour()+":"+tp.getCurrentMinute());}};}。

android开发时间选择器TimePicker的使用

android开发时间选择器TimePicker的使用

android开发时间选择器TimePicker的使⽤前⾔ 我知道现在github上有很多功能强⼤的各⾊选择器,但是Android其实是⾃带⼀些时间选择器的。

在不需要太复杂的ui开发下可以选择使⽤这些系统⾃带的。

android系统⾃带时间控件:DatePicker ⽇期显⽰控件DatePickerDialog ⽇期对话框控件TimePicker 时间显⽰控件TimePickerDialog 时间对话框控件讲解TimePicker选择器的⼀些⾃定义设置⾸先是布局的创建:<TimePickerandroid:id="@+id/timepicker"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="#ffffff"/>设置TimePicker选择器风格TimePicker 本⾝⾃带两种风格,都可以在xml中设置,⼀种是android:timePickerMode="clock"另⼀种是:android:timePickerMode="spinner"TimePicker的显⽰规模⼤⼩设置android:scaleX="2"android:scaleY="2"效果:TimePicker的数据回调mTimepicker = (TimePicker) inflate.findViewById(R.id.timepicker);mTimepicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); //设置点击事件不弹键盘mTimepicker.setIs24HourView(true); //设置时间显⽰为24⼩时mTimepicker.setHour(8); //设置当前⼩时mTimepicker.setMinute(10); //设置当前分(0-59)mTimepicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { //获取当前选择的时间@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {}});利⽤反射修改⼀些选择器的字体效果与背景颜⾊需要⽤到反射的⽅法了,⽐如更改分割线的样式,设置起始截⽌时间等:⾸先我们要通过反射获取TimePicker源码⾥hour和minute的id:Resources systemResources = Resources.getSystem();int hourNumberPickerId = systemResources.getIdentifier("hour", "id", "android");int minuteNumberPickerId = systemResources.getIdentifier("minute", "id", "android");然后⽤我们定义的TimePicker来获取这个id并转换成hour和minute对应的NumberPicker: NumberPicker hourNumberPicker = (NumberPicker) mTimepicker.findViewById(hourNumberPickerId); NumberPicker minuteNumberPicker = (NumberPicker) mTimepicker.findViewById(minuteNumberPickerId);通过获取到的hourNumberPicker和minuteNumberPicker我们可以先进⾏TimePicker的时间限制:hourNumberPicker.setMinValue(8); //设置最⼩hourhourNumberPicker.setMaxValue(12); //设置最⼤hourminuteNumberPicker .setMinValue(0); //设置最⼩minuteminuteNumberPicker .setMaxValue(30); //设置最⼤minute修改滚动条背景颜⾊hourNumberPicker.setBackgroundColor(getResources().getColor(R.color.colorBlue));// 修改背景颜⾊效果图:隐藏冒号⽤最暴⼒的⽅式隐藏滚动条的冒号,就是直接找ChildAtViewGroup view = (ViewGroup) mTimepicker.getChildAt(0);ViewGroup view2 = (ViewGroup) view.getChildAt(1);view2.getChildAt(1).setVisibility(View.GONE);禁⽌键盘输⼊mTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);TimePicker分割线的颜⾊和⾼度private void setNumberPickerDivider(NumberPicker numberPicker) {NumberPicker picker = numberPicker;Field[] pickerFields = NumberPicker.class.getDeclaredFields();for (Field pf : pickerFields) {if (pf.getName().equals("mSelectionDivider")) { //设置颜⾊pf.setAccessible(true);ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.colortime)); //选择⾃⼰喜欢的颜⾊try {pf.set(numberPicker, colorDrawable);} catch (IllegalAccessException e) {e.printStackTrace();}}if (pf.getName().equals("mSelectionDividerHeight")) { //设置⾼度pf.setAccessible(true);try {int result = 3; //要设置的⾼度pf.set(picker, result);} catch (Exception e) {e.printStackTrace();}break;}picker.invalidate();}}。

Android日期选择控件DatePicker用法

Android日期选择控件DatePicker用法

Android⽇期选择控件DatePicker⽤法本例通过点击button显⽰DatePicker对话框先看截图布局⽂件很简单,只是⼀个Button⾸先获取系统时间private int mYear;private int mMonth;private int mDay;private Calendar calendar;calendar = Calendar.getInstance();mYear = calendar.get(Calendar.YEAR);mMonth = calendar.get(Calendar.MONTH);mDay = calendar.get(Calendar.DAY_OF_MONTH);下⾯来看⼀下如何显⽰DatePicker有两种⽅法:⼀、直接new⼀个DialogmBtnBirthday.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//mDateSetListener监听⽤户选择//mYear, mMonth, mDay当前⽇期new DatePickerDialog(SettingsEditUserInfo.this,mDateSetListener, mYear, mMonth, mDay).show();}});⼆、使⽤showDialog显⽰private static final int DATE_DIALOG_ID = 1;showDialog(DATE_DIALOG_ID);/*** 当显⽰时间窗⼝被创建时调⽤*/@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case DATE_DIALOG_ID:return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,mDay);}return null;}@Overrideprotected void onPrepareDialog(int id, Dialog dialog) {switch (id) {case DATE_DIALOG_ID:((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);break;default:break;}}设置显⽰当前⽇期/*** 设置⽇期*/private void setDateTime() {final Calendar c = Calendar.getInstance();mYear = c.get(Calendar.YEAR);mMonth = c.get(Calendar.MONTH);mDay =c.get(Calendar.DAY_OF_MONTH);//更新Button上显⽰的⽇期updateDateDisplay(); }监听事件/*** 监听⽇期变化*/private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { @Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {mYear = year;mMonth = monthOfYear;mDay = dayOfMonth;//更新Button上显⽰的⽇期updateDateDisplay();}};/*** 更新⽇期显⽰(记得month要+1,因为DatePicker索引是0-11)*/private void updateDateDisplay() {mBtnBirthday.setText(new StringBuilder().append(mYear).append("-").append(mMonth + 1).append("-").append(mDay));}over。

android datepicker用法

android datepicker用法

android datepicker用法Android DatePicker 是一个用于选择日期的控件,它可以让用户选择日期和时间。

以下是 DatePicker 的使用方法:1. 在布局文件中添加 DatePicker 控件:```xml<DatePickerandroid:id="@+id/datePicker"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" />```2. 在 Java 代码中获取 DatePicker 实例:```javaDatePicker date = (DatePicker) findViewById(R.id.datePicker);```3. 设置当前日期:```javaCalendar ca = Calendar.getInstance();year = ca.get(Calendar.YEAR);month = ca.get(Calendar.MONTH);day = ca.get(Calendar.DAY_OF_MONTH);```4. 初始化 DatePicker:```javadate.init(year, month, day, new OnDateChangedListener() {@Overridepublic void onDateChanged(DatePicker arg0, int year, int month, int day) {AndroidDemo5Activity.this.year = year;AndroidDemo5Activity.this.month = month;AndroidDemo5Activity.this.day = day;showDate(year, month, day, hour, minute);}});```5. 设置时间改变监听器:```javatime.setOnTimeChangedListener(new OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker arg0, int hour, int minute) {AndroidDemo5Activity.this.hour = hour;AndroidDemo5Activity.this.minute = minute;}});```6. 显示日期和时间:```javaprotected void showDate(int year2, int month2, int day2, int hour2, int minute2) {EditText text = (EditText) findViewById(R.id.show);text.setText("您的购买时间为:" + year2。

5.6.3 DatePicker、TimePicker与TextView同步显示日期和时间[共2页]

5.6.3 DatePicker、TimePicker与TextView同步显示日期和时间[共2页]

Android开发权威指南134ChangedListener)其中year、monthOfYear和dayOfMonth参数分别用来设置DatePicker控件的年、月、日。

onDateChangedListener参数用来设置DatePicker控件的日期变化事件对象。

该对象对应的类必须实现android.widget.DatePicker.OnDateChangedListener接口。

DatePicker控件的显示效果如图5.31所示。

▲ 图5.31 DatePicker的显示效果5.6.2 TimePicker(输入时间的控件)TimePicker控件用来输入时间(只能输入小时和分钟)。

该控件的基本用法如下:<TimePicker android:id="@+id/timepicker"android:layout_width="fill_parent" android:layout_height="wrap_content" />TimePicker在默认情况下是12小时进制,如图5.32所示。

如果想以24小时进制显示时间,可以使用TimePicker类的setIs24HourView方法设置,以24小时进制显示时间的TimePicker控件如图5.33所示。

当TimePicker的时间变化时,会触发OnTimeChanged事件,但与DatePicker控件不同的是,TimePicker通过setOnTimeChangedListener方法设置时间变化的事件对象,而DatePicker通过init方法设置日期变化的事件对象。

▲ 图5.32 12小时进制 ▲ 图5.33 24小时进制5.6.3 DatePicker、TimePicker与TextView同步显示日期和时间工程目录:src\ch05\ ch05_datetimepicker在本例中使用了DatePicker、TimePicker和TextView控件。

androidtimepicker组件的用法

androidtimepicker组件的用法

androidtimepicker组件的用法Android TimePicker组件是Android开发中常用的一个时间选择器组件,它可以让用户方便地选择时间。

本文将详细介绍TimePicker 组件的用法,包括如何在布局文件中引入TimePicker组件、如何设置默认时间、如何监听时间选择事件等。

首先,在布局文件中引入TimePicker组件。

可以使用以下代码将TimePicker组件添加到布局文件中:```xml<TimePickerandroid:id="@+id/timePicker"android:layout_width="wrap_content"android:layout_height="wrap_content"android:timePickerMode="spinner"android:layout_gravity="center_horizontal"android:layout_marginTop="20dp"/>```在上述代码中,我们给TimePicker组件设置了一个唯一的id,设置了宽高为wrap_content,设置了时间选择模式为spinner(下拉框模式),设置了水平居中对齐,并设置了上边距为20dp。

接下来,我们可以在Activity中获取TimePicker组件的实例,并设置默认时间。

可以使用以下代码获取TimePicker组件的实例:```javaTimePicker timePicker = findViewById(R.id.timePicker);```然后,我们可以使用以下代码设置TimePicker组件的默认时间:```javaCalendar calendar = Calendar.getInstance();int hour = calendar.get(Calendar.HOUR_OF_DAY);int minute = calendar.get(Calendar.MINUTE);timePicker.setCurrentHour(hour);timePicker.setCurrentMinute(minute);```在上述代码中,我们使用Calendar类获取当前的小时和分钟,并将其设置为TimePicker组件的默认时间。

datetimepicker控件的用法

datetimepicker控件的用法

datetimepicker控件的用法Datetimepicker控件是一种常见的用于选择日期和时间的界面元素。

它提供了方便的日期和时间选择功能,可以在网页、桌面应用程序和移动应用程序中使用。

1. 引入Datetimepicker控件在使用Datetimepicker控件之前,首先需要引入相关的库文件。

Datetimepicker控件有多种实现方式,可以使用第三方库,如Bootstrap datetimepicker或jQuery datetimepicker,也可以使用浏览器自带的日期时间控件。

2. 配置Datetimepicker控件配置Datetimepicker控件包括设置日期时间格式、限定可选日期时间范围、设置默认值等。

根据具体需求,可以在控件的初始化代码中设置相关参数。

3. 显示Datetimepicker控件使用Datetimepicker控件最常见的是在需要选择日期或时间的输入框中进行调用。

当用户点击或聚焦到该输入框时,Datetimepicker控件将弹出一个选择界面,用于选择日期时间。

4. 日期选择功能Datetimepicker控件提供了方便的日期选择功能。

用户可以通过点击选择界面的日期部分,在日历中选择一个日期。

控件还可以根据设定的参数限定可选日期的范围,如禁用过去的日期或只允许选择未来的日期。

5. 时间选择功能Datetimepicker控件还提供了方便的时间选择功能。

用户可以通过点击选择界面的时间部分,在时钟或滑动条上选择一个时间。

控件可以根据设定的参数限定可选时间的范围,如只允许选择特定的工作时间段。

6. 日期时间选择功能Datetimepicker控件还可以同时选择日期和时间。

用户可以在选择界面上同时操作日期和时间部分,以选择一个具体的日期时间。

7. 事件处理Datetimepicker控件可以触发一些事件,如选择日期或时间、打开或关闭选择界面等。

通过监听这些事件,可以实现一些相关的业务逻辑,如在选择日期后执行某些操作。

picker的用法 -回复

picker的用法 -回复

picker的用法-回复Picker是一种常用的编程工具,它在软件开发过程中起着重要的作用。

Picker的主要功能是提供一种简便的方式来选择或输入特定的值或选项,从而增强用户体验。

下面将逐步介绍Picker的用法及其在不同编程语言中的实现。

一、Picker的基本概念Picker是一种用户界面组件,用于选择或输入特定的值或选项。

它通常以一个下拉菜单的形式出现,其中包含了一系列可供选择的选项。

用户可以通过点击选择框展开的下拉菜单来浏览并选择所需的选项。

Picker的用途十分广泛,可以用于选择日期、时间、颜色、文件、城市等。

它在各种应用中都扮演着重要的角色,比如网页表单、移动应用的设置界面、数据分析工具等。

二、Picker的实现方式Picker的实现方式在不同的编程语言和框架中略有不同,下面将逐一介绍几种常见的实现方式。

1. HTML/CSS/JavaScript在Web开发中,可以使用HTML、CSS和JavaScript来实现Picker。

HTML提供了基本的骨架结构,CSS用于样式美化,JavaScript则负责处理用户的交互行为。

通过HTML的<select>标签可以创建一个Picker。

结合JavaScript和事件监听器,可以对Picker的各个选项进行操作,比如选择、取消选择等。

2. Swift(iOS开发)在iOS开发中,可以使用Swift语言来实现Picker。

iOS提供了UIPickerView组件,可以在界面上创建并显示Picker。

通过代码创建一个UIPickerView实例,并设置其数据源和代理对象。

数据源负责提供Picker的选项数据,而代理对象则负责处理用户的交互行为。

通过实现相关协议和方法,可以自定义Picker的外观和行为。

3. Java(Android开发)在Android开发中,可以使用Java语言来实现Picker。

Android提供了DatePicker、TimePicker和NumberPicker等组件,可以用于选择日期、时间和数值。

Android日期时间选择器实现以及自定义大小

Android日期时间选择器实现以及自定义大小

Android⽇期时间选择器实现以及⾃定义⼤⼩本⽂主要讲两个内容:1.如何将DatePicker和TimePicker放在⼀个dialog⾥⾯;2.改变他们的宽度;问题1:其实现思路就是⾃定义⼀个Dialog,然后往⾥⾯同时放⼊DatePicker和TimePicker,直接贴代码:date_time_picker.xml:<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:orientation="horizontal" ><!-- <DatePickerandroid:id="@+id/new_act_date_picker"android:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="0.6"android:calendarViewShown="false" /><TimePickerandroid:id="@+id/new_act_time_picker"android:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="0.3"/> --><DatePickerandroid:id="@+id/new_act_date_picker"android:layout_width="wrap_content"android:layout_height="wrap_content"android:calendarViewShown="false" /><TimePickerandroid:id="@+id/new_act_time_picker"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>然后在需要显⽰⽇期时间选择器的地⽅(⼀般是⼀个onClickListener中)实例化dialog:DemoActivity.javaarriveAtBtn.setOnClickListener(new View.OnClickListener(){@SuppressLint("NewApi")@Overridepublic void onClick(View v) {View view = View.inflate(getApplicationContext(), yout.date_time_picker, null);final DatePicker datePicker = (DatePicker)view.findViewById(R.id.new_act_date_picker);final TimePicker timePicker = (TimePicker)view.findViewById(R.id.new_act_time_picker);// Init DatePickerint year;int month;int day;if (StringUtils.isEmpty(arriveDateBtn.getText().toString())) {// Use the current date as the default date in the pickerfinal Calendar c = Calendar.getInstance();year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH);day = c.get(Calendar.DAY_OF_MONTH);} else {year = NewActActivity.arrive_year;month = NewActActivity.arrive_month;day = NewActActivity.arrive_day;}datePicker.init(year, month, day, null);// Init TimePickerint hour;int minute;if (StringUtils.isEmpty(arriveTimeBtn.getText().toString())) {// Use the current time as the default values for the pickerfinal Calendar c = Calendar.getInstance();hour = c.get(Calendar.HOUR_OF_DAY);minute = c.get(Calendar.MINUTE);} else {hour = NewActActivity.arrive_hour;minute = NewActActivity.arrive_min;}timePicker.setIs24HourView(true);timePicker.setCurrentHour(hour);timePicker.setCurrentMinute(minute);// Build DateTimeDialogAlertDialog.Builder builder = new AlertDialog.Builder(NewActActivity.this);builder.setView(view);builder.setTitle(R.string.new_act_date_time_picker_title);builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {arrive_year = datePicker.getYear();arrive_month = datePicker.getMonth();arrive_day = datePicker.getDayOfMonth();String dateStr = DateUtil.formatDate(arrive_year, arrive_month, arrive_day);arriveDateBtn.setText(dateStr);arrive_hour = timePicker.getCurrentHour();arrive_min = timePicker.getCurrentMinute();String timeStr = DateUtil.formatTime(arrive_hour, arrive_min);arriveTimeBtn.setText(timeStr);}});builder.show();}});这样就可以实现⽇期时间选择器了,这⾥就有点layout上的⼩问题,你是需要datepicker和timepicker⽔平排列还是竖直排列,竖直排列是没问题的:下⾯给出两个数值排列的效果图:(1)DatePicker控件中设置android:calendarViewShown="false" 时的效果图:(2)(1)DatePicker控件中设置android:spinnersShown="false" 时的效果图:当然,如果你android:calendarViewShown和android:spinnersShown都不设置为false的话,会同时显⽰⽇历和滚动条样式,我想⼀般不会有⼈想要这样的视图吧。

DatePicker,TimePicker时间日期选择器

DatePicker,TimePicker时间日期选择器

DatePicker,TimePicker时间日期选择器DatePicker,TimePicker时间日期选择器❖日期和时间选择器都派出自FrmaeLayout。

❖DatePicker❖TimePicker布局文件:1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3.android:orientation="vertical"4.android:layout_width="fill_parent"5.android:layout_height="fill_parent"6.>7.<TextView8.android:layout_width="fill_parent"9.android:layout_height="wrap_content"10.android:text="选择一个时间"/>11.<!-- 定义一个日期选择器 -->12.<DatePicker13.android:id="@+id/datepicker"14.android:layout_width="wrap_content"15.android:layout_height="wrap_content"16.android:layout_gravity="center_horizontal"/>17.<!-- 定义一个时间选择器 -->18.<TimePicker19.android:id="@+id/timepicker"20.android:layout_width="wrap_content"21.android:layout_height="wrap_content"22.android:layout_gravity="center_horizontal"/>23.<!-- 显示用户选择日期时间24.android:enabled 不可编辑25.android:cursorVisible 不显示光标-->26.<EditText27.android:id="@+id/pickershow"28.android:layout_width="fill_parent"29.android:layout_height="wrap_content"30.android:enabled="false"31.android:cursorVisible="false"/>32.</LinearLayout>修改的时间显示到textview中:1.import java.util.Calendar;2.import android.app.Activity;3.import android.os.Bundle;4.import android.widget.DatePicker;5.import android.widget.EditText;6.import android.widget.TimePicker;7.8.public class AndroidtestActivity11 extends Activity {9.//定义5个记录当前时间的变量10.private int year;11.private int month;12.private int day;13.private int hour;14.private int minute;15.@Override16.public void onCreate(Bundle savedInstanceState)17.{18.super.onCreate(savedInstanceState);19.setContentView(yout.main11);20.DatePicker datePicker = (DatePicker)findViewById (R.id.datepicker);21.TimePicker timePicker = (TimePicker)findViewById (R.id.timepicker);22.//获取当前的年、月、日、小时、分钟23.Calendar c = Calendar.getInstance();24.year = c.get(Calendar.YEAR);25.month = c.get(Calendar.MONTH);26.day = c.get(Calendar.DAY_OF_MONTH);27.hour = c.get(Calendar.HOUR);28.minute = c.get(Calendar.MINUTE);29.showDate(year, month, day, hour, minute);30.//初始化DatePicker组件,初始化时指定监听器31.datePicker.init(year , month ,day, new DatePicker. OnDateChangedListener()32.{33.public void onDateChanged(DatePicker arg0, int y ear, int month, int day)34.{35.AndroidtestActivity11.this.year = year;36.AndroidtestActivity11.this.month = month;37.AndroidtestActivity11.this.day = day;38.//显示当前日期、时间39.showDate(year, month , day , hour, minute);40.}41.});42.//为TimePicker指定监听器43.timePicker.setOnTimeChangedListener(new TimeP icker.OnTimeChangedListener()44.{45.public void onTimeChanged(TimePicker arg0, int hour, int minute)46.{47.AndroidtestActivity11.this.hour = hour;48.AndroidtestActivity11.this.minute = minute;49.//显示当前日期、时间50.showDate(year, month , day , hour, minute);51.}52.});53.}54.//定义在EditText中显示当前日期、时间的方法55.private void showDate(int year, int month , int day , int hour , int minute)56.{57.month+=1;//month从0开始,所以需要加158.EditText show = (EditText)findViewById(R.id.picker show);59.show.setT ext("日期为:" + year + "年" + month + "月" + day + "日 " + hour + "时" + minute + "分");60.}61.}。

AndroidPickerView滚动选择器的使用方法

AndroidPickerView滚动选择器的使用方法

AndroidPickerView滚动选择器的使⽤⽅法⼿机⾥设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器,前⼏天⽤⼿机刷了MIUI,发现⾃带的那个时间选择器效果挺好看的,于是就⾃⼰仿写了⼀个,权当练⼿。

先来看效果:效果还⾏吧?实现思路就是⾃定义⼀个PickerView,单独滚动的是⼀个PickerView,显然上图中有分和秒的选择所以在布局⾥⽤了两个PickerView。

由于这⾥不涉及到text的点击事件,所以只需要继承View就⾏了,直接把text⽤canvas画上去。

PickerView的实现的主要难点:难点1:字体随距离的渐变。

可以看到,text随离中⼼位置的距离变化⽽变化,这⾥变化的是透明度alpha和字体⼤⼩TexSize,这两个值我都设置了Max和Min值,通过其与中⼼点的距离计算scale。

我⽤的是变化曲线是抛物线scale=1-ax^2(x<=Height/4),scale = 0(x>Height/4),a=(4/Height)^2。

x就是距离View中⼼的偏移量。

⽤图⽚表⽰如下:难点2:text的居中。

绘制text的时候不仅要使其在x⽅向上居中,还要在y⽅向上居中,在x⽅向上⽐较简单,设置Paint的Align为Align.CENTER就⾏了,但是y⽅向上很蛋疼,需要计算text的baseline。

难点3:循环滚动。

为了解决循环滚动的问题我把存放text的List从中间往上下摊开,通过不断地moveHeadToTail和moveTailToHead使选中的text始终是list的中间position的值。

以上就是⼏个难点,了解了之后可以来看PickerView的代码了:package com.jingchen.timerpicker;import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.Align;import android.graphics.Paint.FontMetricsInt;import android.graphics.Paint.Style;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/*** 滚动选择器** @author chenjing**/public class PickerView extends View{public static final String TAG = "PickerView";/*** text之间间距和minTextSize之⽐*/public static final float MARGIN_ALPHA = 2.8f;/*** ⾃动回滚到中间的速度*/public static final float SPEED = 2;private List<String> mDataList;/*** 选中的位置,这个位置是mDataList的中⼼位置,⼀直不变private int mCurrentSelected;private Paint mPaint;private float mMaxTextSize = 80;private float mMinTextSize = 40;private float mMaxTextAlpha = 255;private float mMinTextAlpha = 120;private int mColorText = 0x333333;private int mViewHeight;private int mViewWidth;private float mLastDownY;/*** 滑动的距离*/private float mMoveLen = 0;private boolean isInit = false;private onSelectListener mSelectListener;private Timer timer;private MyTimerTask mTask;Handler updateHandler = new Handler(){@Overridepublic void handleMessage(Message msg){if (Math.abs(mMoveLen) < SPEED){mMoveLen = 0;if (mTask != null){mTask.cancel();mTask = null;performSelect();}} else// 这⾥mMoveLen / Math.abs(mMoveLen)是为了保有mMoveLen的正负号,以实现上滚或下滚 mMoveLen = mMoveLen - mMoveLen / Math.abs(mMoveLen) * SPEED;invalidate();}};public PickerView(Context context){super(context);init();}public PickerView(Context context, AttributeSet attrs){super(context, attrs);init();}public void setOnSelectListener(onSelectListener listener){mSelectListener = listener;}private void performSelect(){if (mSelectListener != null)mSelectListener.onSelect(mDataList.get(mCurrentSelected));}public void setData(List<String> datas){mDataList = datas;mCurrentSelected = datas.size() / 2;invalidate();public void setSelected(int selected){mCurrentSelected = selected;}private void moveHeadToTail(){String head = mDataList.get(0);mDataList.remove(0);mDataList.add(head);}private void moveTailToHead(){String tail = mDataList.get(mDataList.size() - 1);mDataList.remove(mDataList.size() - 1);mDataList.add(0, tail);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){super.onMeasure(widthMeasureSpec, heightMeasureSpec);mViewHeight = getMeasuredHeight();mViewWidth = getMeasuredWidth();// 按照View的⾼度计算字体⼤⼩mMaxTextSize = mViewHeight / 4.0f;mMinTextSize = mMaxTextSize / 2f;isInit = true;invalidate();}private void init(){timer = new Timer();mDataList = new ArrayList<String>();mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);mPaint.setStyle(Style.FILL);mPaint.setTextAlign(Align.CENTER);mPaint.setColor(mColorText);}@Overrideprotected void onDraw(Canvas canvas){super.onDraw(canvas);// 根据index绘制viewif (isInit)drawData(canvas);}private void drawData(Canvas canvas){// 先绘制选中的text再往上往下绘制其余的textfloat scale = parabola(mViewHeight / 4.0f, mMoveLen);float size = (mMaxTextSize - mMinTextSize) * scale + mMinTextSize;mPaint.setTextSize(size);mPaint.setAlpha((int) ((mMaxTextAlpha - mMinTextAlpha) * scale + mMinTextAlpha)); // text居中绘制,注意baseline的计算才能达到居中,y值是text中⼼坐标float x = (float) (mViewWidth / 2.0);float y = (float) (mViewHeight / 2.0 + mMoveLen);FontMetricsInt fmi = mPaint.getFontMetricsInt();float baseline = (float) (y - (fmi.bottom / 2.0 + fmi.top / 2.0));canvas.drawText(mDataList.get(mCurrentSelected), x, baseline, mPaint);// 绘制上⽅datafor (int i = 1; (mCurrentSelected - i) >= 0; i++){drawOtherText(canvas, i, -1);}// 绘制下⽅datafor (int i = 1; (mCurrentSelected + i) < mDataList.size(); i++){drawOtherText(canvas, i, 1);}/*** @param canvas* @param position* 距离mCurrentSelected的差值* @param type* 1表⽰向下绘制,-1表⽰向上绘制*/private void drawOtherText(Canvas canvas, int position, int type){float d = (float) (MARGIN_ALPHA * mMinTextSize * position + type* mMoveLen);float scale = parabola(mViewHeight / 4.0f, d);float size = (mMaxTextSize - mMinTextSize) * scale + mMinTextSize;mPaint.setTextSize(size);mPaint.setAlpha((int) ((mMaxTextAlpha - mMinTextAlpha) * scale + mMinTextAlpha)); float y = (float) (mViewHeight / 2.0 + type * d);FontMetricsInt fmi = mPaint.getFontMetricsInt();float baseline = (float) (y - (fmi.bottom / 2.0 + fmi.top / 2.0));canvas.drawText(mDataList.get(mCurrentSelected + type * position),(float) (mViewWidth / 2.0), baseline, mPaint);}/*** 抛物线** @param zero* 零点坐标* @param x* 偏移量* @return scale*/private float parabola(float zero, float x){float f = (float) (1 - Math.pow(x / zero, 2));return f < 0 ? 0 : f;}@Overridepublic boolean onTouchEvent(MotionEvent event){switch (event.getActionMasked()){case MotionEvent.ACTION_DOWN:doDown(event);break;case MotionEvent.ACTION_MOVE:doMove(event);break;case MotionEvent.ACTION_UP:doUp(event);break;}return true;}private void doDown(MotionEvent event){if (mTask != null){mTask.cancel();mTask = null;}mLastDownY = event.getY();}private void doMove(MotionEvent event){mMoveLen += (event.getY() - mLastDownY);if (mMoveLen > MARGIN_ALPHA * mMinTextSize / 2){// 往下滑超过离开距离moveTailToHead();mMoveLen = mMoveLen - MARGIN_ALPHA * mMinTextSize;} else if (mMoveLen < -MARGIN_ALPHA * mMinTextSize / 2){// 往上滑超过离开距离moveHeadToTail();mMoveLen = mMoveLen + MARGIN_ALPHA * mMinTextSize;}mLastDownY = event.getY();invalidate();}private void doUp(MotionEvent event){// 抬起⼿后mCurrentSelected的位置由当前位置move到中间选中位置if (Math.abs(mMoveLen) < 0.0001){mMoveLen = 0;return;}if (mTask != null){mTask.cancel();mTask = null;}mTask = new MyTimerTask(updateHandler);timer.schedule(mTask, 0, 10);}class MyTimerTask extends TimerTask{Handler handler;public MyTimerTask(Handler handler){this.handler = handler;}@Overridepublic void run(){handler.sendMessage(handler.obtainMessage());}}public interface onSelectListener{void onSelect(String text);}}代码⾥的注释都写的很清楚了。

androidtimepicker组件的用法

androidtimepicker组件的用法

androidtimepicker组件的用法Android的TimePicker组件是用来选择时间的UI组件,它允许用户通过滚动选择小时和分钟。

在本文中,我将介绍TimePicker的用法,并提供一些示例代码来说明其具体实现。

1. 添加TimePicker到布局文件中要在布局文件中使用TimePicker,可以将以下代码添加到XML布局文件中:```xml<TimePicker/>```2. 在Activity中获取TimePicker实例并设置监听器要获取TimePicker实例,可以使用findViewById(方法。

然后,可以通过调用setOnTimeChangedListener(方法来设置时间变化的监听器。

以下是在Activity中设置TimePicker监听器的代码示例:```javapublic void onTimeChanged(TimePicker view, int hourOfDay, int minute)//处理时间变化事件}```在上述代码中,onTimeChanged(方法会在时间发生变化时被调用,你可以在该方法中编写处理变化事件的代码。

3.获取选中的时间值要获取用户选择的时间值,可以通过调用getHour(和getMinute(方法来获取小时和分钟值。

以下是获取选中时间值的示例代码:```java```4.设置初始时间值要设置TimePicker的初始时间值,可以调用setHour(和setMinute(方法,并传入所需的小时和分钟值。

以下是设置初始时间值的示例代码:```java```5.设置时间选择范围你还可以使用setMinHour(、setMaxHour(、setMinMinute(和setMaxMinute(方法来限制用户可以选择的时间范围。

以下是设置时间选择范围的示例代码:```java在上述代码中,用户只能在早上9点到晚上6点之间选择时间。

【Android开发API】用户界面-选择器 - Pickers

【Android开发API】用户界面-选择器 - Pickers

原文地址:/guide/topics/ui/controls/pickers.html译文地址:/Pickers翻译:fvn更新日期:2012-07-30Android给用户提供了选择时间或日期的对话框控件。

每个选择器提供了选择时间(⼩时,分钟,上午/下午)或日期(月,日,年)的控件。

使用这些选择器有助于确保用户可以选择⼀个有效的、格式正确的时间或日期,并自动调整到用户的所在区域。

/images/ui/pickers.png我们建议您使用DialogFragment承载每个时间或日期选择器。

DialogFragment能够自动管理对话框的生命周期,并且允许您在不同的布局配置中显示选择器,如在手机上的基本对话框,或⼤屏幕上的布局嵌⼊的⼀部分。

虽然DialogFragment首次加⼊是在Android 3.0平台(API级别11),如果您的应用程序支持的Android版本低于3.0,甚至是Android 1.6版本,你也可以使用⼀个向后兼容的支持库来使用DialogFragment类。

注意:下面的代码显示了如何创建和使用⼀个时间和日期选择器,它使用了DialogFragment的支持库API。

如果应用程序的minSdkVersion是11或更高,你可以直接使用DialogFragment的平台版本。

为了使用DialogFragment来显示TimePickerDialog,你需要定义⼀个片段类,它扩展了DialogFragment,并且通过onCreateDialog()方法返回⼀个TimePickerDialog。

注意:如果您的应用程序支持低于Android3.0的版本,确保你的Android项目已经设置了支持库。

继承DialogFragment,创建时间选择器 - Extending DialogFragment for a time picker为了定义⼀个用于TimePickerDialog的DialogFragment , 你必须:定义onCreateDialog()的方法以实例化TimePickerDialog实现TimePickerDialog.OnTimeSetListener接⼝,以便当用户设置时间时实现回调.下面是⼀个例⼦:public static class TimePickerFragment extends DialogFragment implementsTimePickerDialog.OnTimeSetListener {}要知道参数信息,请查看TimePickerDialog类。

Android常用控件开发详解

Android常用控件开发详解

Android常用控件开发详解1.Android控件之DatePicker、TimePicker探究一、DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年、月、日的日期数据并允许用户对其修改。

如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器。

二、TimePicker也继承自FrameLayout类。

时间选择控件向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择。

如果要捕获用户修改时间数据的事件,便需要为TimePicker添加OnTimeChangedListener监听器以下模拟日期与时间选择控件的用法目录结构main.xml布局文件1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3. android:orientation="vertical"4. android:layout_width="fill_parent"5. android:layout_height="fill_parent">6. <DatePicker android:id="@+id/datePicker"7.android:layout_width="wrap_content"8.android:layout_height="wrap_content"9.android:layout_gravity="center_horizontal"/>10. <EditText android:id="@+id/dateEt"11.android:layout_width="fill_parent"12.android:layout_height="wrap_content"13.android:cursorVisible="false"14.android:editable="false"/>15. <TimePicker android:id="@+id/timePicker"16.android:layout_width="wrap_content"17.android:layout_height="wrap_content"18.android:layout_gravity="center_horizontal"/>19. <EditText android:id="@+id/timeEt"20.android:layout_width="fill_parent"21.android:layout_height="wrap_content"22.android:cursorVisible="false"23.android:editable="false"/>24.</LinearLayout>复制代码DpTpActivity类1.package com.ljq.activity;2.3.import java.util.Calendar;4.5.import android.app.Activity;6.import android.os.Bundle;7.import android.widget.DatePicker;8.import android.widget.EditText;9.import android.widget.TimePicker;10.import android.widget.DatePicker.OnDateChangedListener;11.import android.widget.TimePicker.OnTimeChangedListener;12.13.public class DpTpActivity extends Activity {14. private EditText dateEt=null;15. private EditText timeEt=null;16.17. @Override18. public void onCreate(Bundle savedInstanceState) {19.super.onCreate(savedInstanceState);20.setContentView(yout.main);21.dateEt=(EditText)findViewById(R.id.dateEt);22.timeEt=(EditText)findViewById(R.id.timeEt);23.DatePickerdatePicker=(DatePicker)findViewById(R.id.datePicker);24.TimePickertimePicker=(TimePicker)findViewById(R.id.timePicker);25.26.Calendar calendar=Calendar.getInstance();27.int year=calendar.get(Calendar.YEAR);28.int monthOfYear=calendar.get(Calendar.MONTH);29.int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);30.datePicker.init(year, monthOfYear, dayOfMonth, newOnDateChangedListener(){31.32.public void onDateChanged(DatePicker view, int year,33.int monthOfYear, int dayOfMonth) {34. dateEt.setText("您选择的日期是:"+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日。

picker用法

picker用法

picker用法Picker是一种常用的UI组件,用于让用户从预定义的选项中选择一个值。

它在移动应用程序开发中广泛使用,提供了简单直观的界面,帮助用户进行选择操作。

在本文中,我们将介绍Picker的基本用法,帮助您了解如何使用Picker来增强您的应用程序。

首先,要使用Picker组件,您需要在应用程序中导入相应的库或依赖。

这通常在开发环境的设置文件中完成,具体的步骤可能因所用开发环境而异。

一旦您成功导入Picker组件,您可以在应用程序的视图中使用它。

通常,您需要定义一个Picker的数据源,即您希望用户从中选择的选项列表。

这些选项可以是硬编码的值,也可以是动态生成的数据。

接下来,您可以通过以下方式配置Picker的属性来自定义其外观和行为:1. selectedValue:该属性指定Picker的初始值。

您可以将它设置为数据源中的一个值,或者使用变量来控制选中的值。

2. onValueChange:该属性接收一个函数作为参数,用于处理Picker值的更改事件。

当用户选择一个新的值时,这个函数会被触发,您可以在其中更新相关的状态或执行其他操作。

3. mode:该属性决定了Picker的显示模式。

您可以选择一个模式,如“dropdown”、“dialog”或“wheel”,以实现不同的外观和交互方式。

在应用程序中使用Picker时,您还可以根据需求进行一些其他的自定义操作。

例如,您可以设置Picker的样式、字体、颜色等,以适应您的应用程序设计风格。

您还可以使用布局布局参数来控制Picker在界面中的位置和大小。

总之,Picker是一个方便实用的UI组件,可用于让用户从预定义选项中选择一个值。

通过了解Picker的基本用法和常用属性,您可以轻松地在您的应用程序中使用它,提供更好的用户体验。

无论是选择日期、时间、地点还是其他选项,Picker都能帮助您简化用户操作,增强应用程序功能。

android datepickerdialog 回调函数 -回复

android datepickerdialog 回调函数 -回复

android datepickerdialog 回调函数-回复Android DatepickerDialog 回调函数是指在使用DatePickerDialog控件时,通过回调函数来处理用户选择日期的操作。

回调函数是一种常用的编程模式,用于实现异步处理和事件驱动。

在Android开发中,DatePickerDialog是一个用于选择日期的对话框控件。

当用户点击日期选择按钮时,DatePickerDialog将显示一个日期选择面板,用户可以通过滑动或输入来选择日期。

选择完毕后,我们可以通过回调函数来获取用户选择的日期,并进行相应的处理。

首先,我们通过实现DatePickerDialog.OnDateSetListener接口来定义我们的回调函数。

在Java中,接口是一种抽象类型,定义了一组方法签名。

DatePickerDialog.OnDateSetListener接口是用于当用户选择完日期后的回调通知。

接下来,我们需要创建一个DatePickerDialog对象,并设置其日期变化监听器为我们实现的回调函数。

在DatePickerDialog的构造函数中,我们需要指定Context、回调函数和初始日期等参数。

回调函数通常以on开头,后面跟着相应的事件响应方法。

在DatePickerDialog.OnDateSetListener接口中,我们需要实现一个onDateSet()方法来获取用户选择的日期。

该方法会在用户完成选择后被调用,将选择的日期作为参数传入。

在onDateSet()方法中,我们可以通过参数获取用户选择的年、月、日,然后可以对这些数据进行相应的处理。

例如,我们可以将日期显示在一个TextView控件上,或者通过Toast消息显示出来。

DatePickerDialog的回调函数可以利用用户选择的日期来进行一系列的操作。

例如,可以将选择的日期保存到数据库中,或者用它来进行某种计算,亦或是发送到服务器进行相关的数据处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A VD
SDK
Activity_main.xml
<LinearLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"/>
<EditText
android:id="@+id/valueId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
xmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<DatePicker
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TimePicker
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
Mainactivity.java
package controls.androidtest_picker;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
public class MainActivity extends Activity {
private EditText showValue=null;
private DatePicker datePicker=null;
private TimePicker timePicker=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.activity_main);
showValue=(EditText)findViewById(R.id.valueId);
datePicker=(DatePicker)findViewById(R.id.date);
timePicker=(TimePicker)findViewById(R.id.time);
timePicker.setIs24HourView(true);
timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
setDateTime();
}
});
datePicker.init(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), new datePickerChangedListener());
setDateTime();
}
public void setDateTime(){
showValue.setText(datePicker.getYear()+"-"+(datePicker.getMonth() +1)+"-"+datePicker.getDayOfMonth()+"
"+timePicker.getCurrentHour()+":"+timePicker.getCurrentMinute());
}
class datePickerChangedListener implements OnDateChangedListener{
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
setDateTime();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}。

相关文档
最新文档