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实现一个轻量的尺子(1)】明天继续 第一次写 尼玛完全不知道怎么去表达。

    推荐阅读