产品中的需求是 要用到滑动刻度尺的方式选择金额。
如下图,刻度的部分可以左右滑动选择金额,借款金额TextView跟着联动
中间的大箭头是固定在布局中的,跟刻度尺无关。上主要代码:
/**
* @创建者 wenqi
* @创建时间 2019/3/13 19:30
* @描述 自定义刻度尺View
*/
public class ScaleView extends View {
private Context mcontext;
private int mMax; //最大刻度
private int mMin; // 最小刻度
private int mScrollMaxValue; // 可滑动到的最大刻度
private int mScrollMinValue; // 可滑动到的最小刻度
private int mScaleMargin; //刻度间距
private int mScaleHeight; //刻度线的高度
private int iScaleHeight; //整刻度线高度
private int mCountScale; //滑动的总刻度
private int mWith; // 屏幕宽度
private int paintLinewidth;
private int allWidth; //总宽度
private int mHeight; //高度
private int textSize;
private Scroller mScroller; // 滑动类
private int mLastX; // 滑动的坐标
private int direction; // 用于判断滑动方向
private int mMidScale; //中间刻度
private Paint paint; // 画笔
boolean is = true;
protected OnScrollListener mScrollListener;
public interface OnScrollListener {
void onScaleScroll(int scale);
}
public ScaleView(Context context) {
super(context);
}
public ScaleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mcontext = context;
getAtt(attrs);
// init();
}
/**
* 初始化
*/
private void init() {
}
private void getAtt(AttributeSet attrs) {
TypedArray typedArray = mcontext.obtainStyledAttributes(attrs, R.styleable.ScaleView);
mMin = typedArray.getInt(R.styleable.ScaleView_scale_view