Android自定义WheelView的40行关键代码
2016-05-08 22:55
645 查看
// 给ListView设置一个滑动监听器,就可以把它变成WheelView listView.setOnScrollListener(new AbsListView.OnScrollListener() { /* 实现代码如下所示 */ });
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 当滑动停止时 if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { View firstVisibleView = view.getChildAt(0); int height = firstVisibleView.getHeight(); /** * top为firstVisibleView与parent两者顶部的相对距离,单位为像素。 * Android的坐标轴原点在屏幕左上角,越往上y值越小。 * 由于firstVisibleView总是有部分不可见, * 因此top的取值范围为:(-height, 0] */ int top = firstVisibleView.getTop(); int visibleHeight = top + height; if(visibleHeight <= (height >> 1)) { // 若firstVisibleView可见高度小于等于一半,则上滑直至不可见 view.scrollBy(0, visibleHeight + ((ListView)view).getDividerHeight()); } else { // 若firstVisibleView可见高度大于一半,则下滑直至完全可见 view.scrollListBy(0, top); } // 调用scrollBy()之后,会引发onScroll() } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int newMiddlePosition = firstVisibleItem + ((visibleItemCount - 1) >> 1); if (mMiddlePosition != newMiddlePosition) { mMiddlePosition = newMiddlePosition; BaseAdapter adapter = ((BaseAdapter)view.getAdapter()); adapter.notifyDataSetChanged(); // 接着可以调用监听mMiddlePosition变化的自定义listener } }
相关文章推荐
- 修改wheelView,全部代码
- AndroidWheel 省市区三级联动(高仿IOS版本)
- 漂亮的时间日期选择 wheelView
- android 100行代码实现 仿苹果滑动选择器WheelView
- 省市县三级联动
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- Android 仿iOS时间选择器自定义WheelView
- Android 自定义WheelView
- Android自定义实现循环滚轮控件WheelView
- Android WheelView(滑轮组件)使用
- WheelView滚动选择控件
- 使用wheel自定义日期弹出框
- 好用的城市选择(三级联动)
- Android使用WheelView出现只显示一位数字的问题
- Android 地区和日期选择器(附源码)
- ListView实现类似WheelView效果的探究
- Android自定义WheelView
- WheelDatePicker
- 自定义滚轮WheelView源码全方位分析
- 自定义Dialog实现日期选择器