一款Android的滚轮控件,从别的项目反编译过来的

原文出处:http://www.jianshu.com/p/e2b3118d8ca4 

几个月就有用过一款请吃饭的APP,很喜欢里面设置年龄和身高的滚轮控件,多次试图从网上搜索到这款滚轮控件,可惜都没有找到,于是就狠下心来自己反编译了一下,幸好,皇天不负苦心人,终于成功了,我应该是第一个把这款控件公开出来的人吧,废话少说,先看效果图……

43468-ddcbc9fd60003996.gif

效果是不是很惊艳啊,跟其他的滚轮控件有以下几点我喜欢的

  • 滑动的速率适中,很多滚轮控件,手指稍微一划,数据就跑的很快,跟listview一样,可是滚轮控件一般数据量比较少,而且目的是为了选中需要的选项,这款滚轮控件的滑动速度我很喜欢

  • 全屏的滑动操控:就是当你在滚轮区域按下手指,滑动滚轮控件的时候,当你的手指滑动到滚轮区域外面的地方,也可以控制滚轮的滑动,very good,实现方法是拦截了ACTION_MOVE这个事件,所以整个大屏幕都可以作为滚轮控件的滑动控制

  • 字体的折叠效果,和选中时候的折射效果,这个真的是跟原生的iOS几乎一致的,其他网上说的仿照iOS的滚轮,我觉得都是骗人的

好了,最后说下这款滚轮控件的用法,整个控件是个LoopView,用法非常简单,查看下面的代码注释:

LoopView loopView = new LoopView(this);
ArrayList<String> list = new ArrayList();
for (int i = 0; i < 15; i++) {
    list.add("item " + i);
}
//设置是否循环播放
loopView.setNotLoop();
//滚动监听
loopView.setListener(new LoopListener() {
    @Override
    public void onItemSelect(int item) {
        Log.d("debug", "Item " + item);
    }
});
//设置原始数据
loopView.setArrayList(list);
//设置初始位置
loopView.setPosition(5);
//设置字体大小
loopView.setTextSize(30);
rootview.addView(loopView, layoutParams);

使用方法非常简单的,看代码的注释就可以了,我这里为了演示,估计把自己设置的很大

这款控件因为是反编译的,所以源码还有很多被混淆的地方,没有编译出原始的意思,当一些关键的字段我是解析出来的,至于具体的使用,我测试了下,是没有问题的。

源码我放在了Gitbub,欢迎查看