superすごい♂

Android-SpinnerWheel 仿IOS滚轮效果的spinner

项目地址: https://github.com/ai212983/android-spinnerwheel

效果图:https://raw.github.com/ai212983/android-spinnerwheel/master/.assets/screenshot_00.png

项目迭代,UI大改,,特别是时间选择器,android自带的用的是在是差强人意,在网站上找到了这个东西,觉得还不错,至少满足了我项目的需求

xml中配置组件

<antistatic.spinnerwheel.WheelVerticalViewandroid:id="@+id/hour"android:layout_width="50dp"android:layout_height="wrap_content" />activity中的代码

//时间选择hours = (AbstractWheel) m_dialog.findViewById(R.id.hour);hours.setViewAdapter(new NumericWheelAdapter(this, 0, 23));hours.setCyclic(true);mins = (AbstractWheel) m_dialog.findViewById(R.id.mins);mins.setViewAdapter(new MyNumericWheelAdapter(this, 0, 12, "%02d"));mins.setCyclic(true);// set current timeCalendar c = Calendar.getInstance();int curHours = c.get(Calendar.HOUR_OF_DAY);int curMinutes = c.get(Calendar.MINUTE);hours.setCurrentItem(curHours);mins.setCurrentItem(curMinutes);//日期选择day = (AbstractWheel) m_dialog.findViewById(R.id.day);Calendar calendar = Calendar.getInstance(Locale.CHINESE);mDayArrayAdapter = new MyDayArrayAdapter(this, calendar);day.setViewAdapter(mDayArrayAdapter);day.setCurrentItem(mDayArrayAdapter.getToday());时间数字adapter

public class MyNumericWheelAdapter extends NumericWheelAdapter {public MyNumericWheelAdapter(Context context, int minValue, int maxValue,String format) {super(context, minValue, maxValue, format);// TODO Auto-generated constructor stubthis.minValue = minValue;this.maxValue = maxValue;this.format = format;}// Valuesprivate int minValue;private int maxValue;// formatprivate String format;@Overridepublic CharSequence getItemText(int index) {if (index >= 0 && index < getItemsCount()) {int value = index*5;return format != null ? String.format(format, value) : Integer.toString(value);}return null;}@Overridepublic int getItemsCount() {//return maxValue – minValue + 1;return 12;}日期的adapter

public class MyDayArrayAdapter extends AbstractWheelTextAdapter{// Count of days to be shownprivate final int daysCount = 18;// Calendarprivate Calendar calendar;private DateFormat format1 = new SimpleDateFormat("dd日");private DateFormat format2 = new SimpleDateFormat("yyyy年MM月");private DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");/*** Constructor*/protected MyDayArrayAdapter(Context context, Calendar calendar) {super(context, R.layout.time_picker_custom_day, NO_RESOURCE);this.calendar = calendar;setItemTextResource(R.id.time2_monthday);}public int getToday() {return daysCount / 2;}@Overridepublic View getItem(int index, View cachedView, ViewGroup parent) {int day = -daysCount/2 + index;Calendar newCalendar = (Calendar) calendar.clone();newCalendar.add(Calendar.DAY_OF_YEAR, day);View view = super.getItem(index, cachedView, parent);TextView weekday = (TextView) view.findViewById(R.id.time2_day);weekday.setText(format1.format(newCalendar.getTime()));TextView monthday = (TextView) view.findViewById(R.id.time2_monthday);if (day == 0) {//monthday.setText("Today");monthday.setTextColor(0xFF60BDFF);weekday.setTextColor(0xFF60BDFF);} else {monthday.setTextColor(0xFF111111);weekday.setTextColor(0xFF111111);}monthday.setText(format2.format(newCalendar.getTime()));view.setTag(dFormat.format(newCalendar.getTime()));return view;}/*** 一共有多少行数据*/@Overridepublic int getItemsCount() {return daysCount + 1;}/*** 获取当前行的数据*/@Overrideprotected CharSequence getItemText(int index) {if (index >= 0 && index < getItemsCount()) {Calendar nCalendar = (Calendar) calendar.clone();nCalendar.add(Calendar.DAY_OF_YEAR, -daysCount/2 + index);return dFormat.format(nCalendar.getTime());}return TimeUtil.currentLocalDateString();}}还有其他的用法,暂时只用到时间日期的显示和选择,不管怎么样,问题解决才是重点。

我为自己写博客O(∩_∩)O~

要知道,当你一直在担心错过了什么的时候,

superすごい♂

相关文章:

你感兴趣的文章:

标签云: