Android日期日历控件:TimesSquare使用心得

TimesSquare实现选择日期日历控件,可单选,,多选,区间范围和对话框四种方式。

如图展示 区间范围视图。

使用该控件,除了在布局文件中使用该控件外,需要为它创建一个编辑器:如SampleDecorator

代码示例:

public class SampleDecorator implements CalendarCellDecorator {@Overridepublic void decorate(CalendarCellView cellView, Date date) {String dateString = "";MonthCellDescriptor cell = (MonthCellDescriptor) cellView.getTag();Date currentDate = new Date();if (currentDate.getYear() == date.getYear()&& currentDate.getMonth() == date.getMonth()&& currentDate.getDate() == date.getDate()) {dateString = "本日";} else {dateString = Integer.toString(date.getDate());}if (cell.isInDate() && !cell.isOutDate()) {dateString = "入住";} else if (cell.isInDate() && cell.isOutDate()) {dateString = "离店";}SpannableString string = new SpannableString(dateString);string.setSpan(new RelativeSizeSpan(0.5f), 0, dateString.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);cellView.setText(string);}}

可以通过检测cell(每个格子)的属性来控制cell中对应的显示内容,达到定制效果。

在Activity中使用时,需要初始化控件。

示例代码:

private CalendarPickerView calendar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_date);

ActivityBack.getInstance(this);final Calendar nextYear = Calendar.getInstance();nextYear.add(Calendar.YEAR, 1);final Calendar lastYear = Calendar.getInstance();lastYear.add(Calendar.YEAR, -1);calendar = (CalendarPickerView) findViewById(R.id.calendar_picker);List<CalendarCellDecorator> decorators = new ArrayList<CalendarCellDecorator>();decorators.add(new SampleDecorator());calendar.setDecorators(decorators);calendar.init(lastYear.getTime(), nextYear.getTime()).inMode(SelectionMode.SINGLE).withSelectedDate(new Date());Calendar today = Calendar.getInstance();ArrayList<Date> dates = new ArrayList<Date>();Intent intent = getIntent();// 设置多选日期起始位置从当前推迟多少天today.add(Calendar.DATE,Utils.getDateDeffence((new Date().toString()),intent.getStringExtra("INDATE")));dates.add(today.getTime());// 设置多选日期结束位置从入住日期推迟多少天today.add(Calendar.DATE,Utils.getDateDeffence(intent.getStringExtra("INDATE"),intent.getStringExtra("OUTDATE")));dates.add(today.getTime());calendar.init(new Date(), nextYear.getTime()).inMode(SelectionMode.RANGE).withSelectedDates(dates);}@Overridepublic void onConfigurationChanged(Configuration newConfig) {}public void finish(View v) {List<Date> dates = calendar.getSelectedDates();Date firstdate = dates.get(0);Date lastdate = dates.get(dates.size() – 1);if (firstdate != null && lastdate != null) {Intent intent = new Intent();intent.putExtra("date1", firstdate.toString());intent.putExtra("date2", lastdate.toString());intent.putExtra("night", dates.size() – 1);setResult(RESULT_OK, intent);} else {setResult(RESULT_CANCELED, null);}finish();}

需要定制其他功能可以修改Library库中的对象编辑器属性来添加监听属性。

控件下载地址:等待更新

累死累活不说,走马观花反而少了真实体验,

Android日期日历控件:TimesSquare使用心得

相关文章:

你感兴趣的文章:

标签云: