NumberPickerView
another NumberPicker with more flexible attributes on Android platform
项目地址
https://github.com/Carbs0126/NumberPickerView
前言
在平时开发中会用到NumberPicker组件,但是默认风格的NumberPicker
具有一些不灵活的属性,且定制起来比较麻烦,且缺少一些过渡动效,因此在应用开发时,一般采用自定义的控件来完成选择功能。
控件截图
静态截图以及渐变效果
应用NumberPickerView的一个实例,一款可以选择公历/农历日期的View,且公农历自由切换,项目地址 GregorianLunarCalendar
应用NumberPickerView的一个实例,一款可以选择公历/农历日期的View,且公农历自由切换
gif大小超过限制了,具体效果可见:
https://github.com/Carbs0126/Screenshot/blob/master/gregorian.gif
截屏有些问题,使得看上去有点卡顿且divider颜色不一致,实际效果很流畅。具体项目地址可见:
https://github.com/Carbs0126/GregorianLunarCalendar
说明
NumberPickerView
是一款与android原生NumberPicker
具有类似界面以及类似功能的View
。
主要功能同样是从多个候选项中通过上下滚动的方式选择需要的选项,但是与NumberPicker
相比较,有几个主要不同点,下面是两者的不同之处。
原始控件特性-NumberPicker
- 显示窗口只能显示3个备选选项;
- 在fling时阻力较大,无法快速滑动;
- 在选中与非选中状态切换比较生硬;
- 批量改变选项中的内容时,没有动画效果;
- 动态设置wrap模式时(
setWrapSelectorWheel()
方法),会有“暂时显示不出部分选项”的问题; - 选中位置没有文字说明;
- 代码中不能控制选项滑动滚动到某一item;
自定义控件特性-NumberPickerView
- 显示窗口可以显示多个备选选项;
- fling时滑动速度较快,且可以设置摩擦力;
- 在选中与非选中的状态滑动时,具有渐变的动画效果,包括文字放大缩小以及颜色的渐变;
- 在批量改变选项中的内容时,可以选择是否采用友好的滑动效果;
- 可以动态的设置是否wrap,即,是否循环滚动;
- 选中位置可以添加文字说明,可控制文字字体大小颜色等;
- 具有在代码中动态的滑动到某一位置的功能;
- 支持
wrap_content
,支持item的padding - 提供多种属性,优化UI效果
- 在滑动过程中不响应
onValueChanged()
- 点击上下单元格,可以自动滑动到对应的点击对象。
- 兼容NumberPicker的重要方法和接口:
兼容的方法有:
setOnValueChangedListener()
setOnScrollListener()
setDisplayedValues()/getDisplayedValues()
setWrapSelectorWheel()/getWrapSelectorWheel()
setMinValue()/getMinValue()
setMaxValue()/getMaxValue()
setValue()/getValue()
兼容的内部接口有:
OnValueChangeListener
OnScrollListener
使用方法
1.导入至工程
compile 'cn.carbswang.android:NumberPickerView:1.0.2'
或者
<dependency>
<groupId>cn.carbswang.android</gr