自从去年发布了一款Android的滚轮控件,从别的项目反编译过来的后,由于各种原因(其实是懒),一直没有更新,一直拖了这么久,实在惭愧。
这次抽空,对项目做一轮彻底的更新,优化了很多的细节体验和接口,性能也提升了许多,目的是为了在实际的项目中,可以直接使用。
使用gradle集成
dependencies {
compile 'com.weigan:loopView:0.1.0'
}
效果预览图.gif先上一张图,看下这个滚轮控件的效果:
下面是主要的更新点:
- 滚轮的大小,可以随着视图的大小调整,之前滚轮控件都是由文本大小决定的,这样很不合理,改成随着控件的大小而改变。
- 提供各种参数接口,包括文本大小,显示数量,控件颜色等各种参数
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分别代表什么意思啊?
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;
}
}