仿ios滚轮控件更新

作者: 韦东锏 | 来源:发表于2016-12-30 17:31 被阅读5559次

    自从去年发布了一款Android的滚轮控件,从别的项目反编译过来的后,由于各种原因(其实是懒),一直没有更新,一直拖了这么久,实在惭愧。
    这次抽空,对项目做一轮彻底的更新,优化了很多的细节体验和接口,性能也提升了许多,目的是为了在实际的项目中,可以直接使用。

    使用gradle集成

    dependencies {
        compile 'com.weigan:loopView:0.1.0'
    }
    

    先上一张图,看下这个滚轮控件的效果:

    效果预览图.gif

    下面是主要的更新点:

    1. 滚轮的大小,可以随着视图的大小调整,之前滚轮控件都是由文本大小决定的,这样很不合理,改成随着控件的大小而改变。
    2. 提供各种参数接口,包括文本大小,显示数量,控件颜色等各种参数

    Description of Attributes

    Attributes Format Default Description
    awv_textsize integer 15 textsize
    awv_lineSpace float 2.0f line space
    awv_centerTextColor integer oxff313131 center text color
    awv_outerTextColor integer 0xffafafaf outer text color
    awv_dividerTextColor integer oxff313131 center text color
    awv_itemsVisibleCount integer 9 visible item count
    awv_isLoop boolean true is loop mode

    3.性能的极大优化,下面是优化前后的刷新对比

    优化前 优化后

    更新控件目的,是希望可以直接在项目中使用,也希望大家会喜欢,如果有任何问题,请随时在GitHub上面提交issue,这个项目,我将会持续跟进。

    项目地址请点击这里

    相关文章

      网友评论

      • 千江明月:但还有些地方看不明白的,请教一下:
        1、smoothScroll方法中有计算偏移量的:
        mOffset = (int) ((totalScrollY % itemHeight + itemHeight) % itemHeight);
        这个偏移量为什么要这么计算,计算出的是什么偏移量?
        2、case MotionEvent.ACTION_UP中:
        int circlePosition = (int) ((l + itemHeight / 2) / itemHeight);
        float extraOffset = (totalScrollY % itemHeight + itemHeight) % itemHeight;
        mOffset = (int) ((circlePosition - itemsVisibleCount / 2) * itemHeight - extraOffset);
        这里的circlePosition、extraOffset、mOffset分别代表什么意思啊?
      • 千江明月:你好!我看了LoopView的所有代码,学习了很多东西,谢谢啊!
      • Master_Yang:你好,无法设置选择的条目的背景颜色,UI没有提供outtextcolor,他说那个是滚动就会有的颜色,请问怎么处理
      • 无声的喧闹:遇到一个问题,填充的list集合中包含多个相同String字符串时,Loopview会返回错误的index,解决方案重写List集合的index方法,将equals改为==可以解决。代码如下:
        class MyList extends ArrayList<String> {
        @Override
        public int indexOf(Object o) {
        if (o == null) {
        for (int i = 0; i < size(); i++)
        if (get(i)==null)
        return i;
        } else {
        for (int i = 0; i < size(); i++)
        if (o==get(i))
        return i;
        }
        return -1;
        }
        }
      • AWeiLoveAndroid:按国际惯例点个赞:+1:
      • SoldierWIN:确定按钮?
      • 再也不做的事:你好请问,我设置默认选中之后,怎么不走监听呢,785450763我qq,可以请教一下你吗,
      • 谁的春春不迷茫:楼主你这个数据怎么会重复啊 比如只有三个数据项 怎么感觉无限向下滑,
      • 416d6ec73848: public final void setItems(List<String> items) 只能是String不够友好, 建议改用泛型,绘制文本时,用toString处理。
      • 风舞尘起:setCurrentPosition(0) 还是有问题,会跳到数据的一半的位置
      • 2c62d705359e:博主,我也在用你这个控件,但是今天把loopView滑到底端的时候崩溃了,定位了一下是onDraw方法里的item.size为0的时候,preCurrentIndex = initPosition + change % items.size();divide by zero,用的是0.1.2版本,怎么处理一下比较合适?
      • Allens_Jiang:楼主 我已导入这个项目 就直接崩了。。。。
        韦东锏:哪里崩溃了,发出来我看下
      • 8bb8f07a41d8:楼主,请问一下,这个能不能设置item的高度?我好像找不到那个方法
        谁的春春不迷茫:@无声的喧闹 谢谢老铁 我遇到经常滑动的时候 数组角标越界 你有遇到吗
        无声的喧闹:@青春不迷茫_Lee setLineSpacingMultiplier
        谁的春春不迷茫:你好 请问你找到这个设置item高度的api了吗
      • 3baaae055162:这个能实现多列的吗
        韦东锏:要自己实现,本身是支持的
      • 满天星爱我:66
        满天星爱我:@程自舟 :smirk:
        程自舟:这也能找到你
      • 风一样的缘:请问怎麼设置每个item的高度?,挨得太紧了。。。
        谁的春春不迷茫:你好 请问你找到这个设置item高度的api了吗
      • 凌空之鹤:请问如何实现一开始显示就定位到某一个条目上呢,我显现了一个出生日期选择的,开始日期是1900年一月一日,最大时间是当前时间,默认定位到1980年1月一日,怎么实现用这个?
      • 喂你的蓝玫瑰:这个字多的化怎么换行呀
      • Tonlin:做的很好
      • 王元_Trump:一直再用这个
        再也不做的事:请问设置默认值之后为什么不走监听的方法,你遇到了吗

      本文标题:仿ios滚轮控件更新

      本文链接:https://www.haomeiwen.com/subject/trvmvttx.html