Android实现一个轻量的尺子(1)

主要实现一个RecylerViewAdapter去做一把尺子

先上地址: https://github.com/adgvcxz/RulerRecyclerView

  • 超轻量
  • 更多的自定义选项
  • 监听刻度变化
  • 简单易用,扩展性高

效果:

实现思路:

目前大多尺子是一个自定View去实现的,很少用到RecylerView

该Adapter主要分为3部分:尺子的左半部分,中间部分,右半部分。
每个刻度组只有一个长刻度线

Adapter:

**
 * 设置刻度的数量,以及多少刻度为一个组
 */
public Builder setNumberAndGroup(int number, int groupNumber) {
    mRulerAdapter.mScaleNumber = number;
    mRulerAdapter.mGroupNumber = groupNumber;
    mRulerAdapter.mLeftNumber = (int) (Math.ceil((float) (groupNumber - 1) / 2)); //每个刻度左半部分刻度线的数量
    mRulerAdapter.mRightNumber = (int) (Math.floor((float) (groupNumber - 1) / 2));  //每个刻度右半部分刻度线的数量
    mRulerSnapHelper.setLeftAndRight(mRulerAdapter.mLeftNumber, mRulerAdapter.mRightNumber);
    return this;
}
@Override
public int getItemViewType(int position) {
    if (position == 0) {
        return LEFT_SPACING; //左半部分
    }
    if (position == getItemCount() - 1) {
        return RIGHT_SPACING; //右半部分
    }
    return LINE; //中间部分
}
@Override
public int getItemCount() {
    if (mLeftNumber > 0) {
        if (mRightNumber >= mScaleNumber) {
            return 1;  //如果右半部分刻度大于所有刻度 则只有右半部分
        } else {
            if (mGroupNumber + mRightNumber + 1 >= mScaleNumber) {
                return 2; //如果所有刻度小于一个组的刻度数量  则只有右半部分和左半部分
            } else {
                int number = mScaleNumber - mRightNumber - 1;
                return 2 + number / mGroupNumber; // 含有中间部分的刻度
            }
        }
    }
    return 0;
}

明天继续 第一次写 尼玛完全不知道怎么去表达。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,493评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,287评论 4 61
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,955评论 22 665
  • 与太阳争跑 今天又起得很早 星星还眨着眼 我把行装早已背上 不知已是多少次与黎明较劲 只是不愿意 年老时 还贫困潦...
    垄上行云阅读 214评论 0 1
  • 初冬时分,已经没有以前的那么寒冷,两件衣服足够。不过此时冬眠的动物似乎已经开冬眠了,时隔几日未曾更文,我也害怕我的...
    千劫已过阅读 311评论 0 11