Ruler GitHub 下載地址
在GitHub看過一些實現,發現大部分都是使用ScrollView實現,沒有重複複用刻度,如果刻度值很大,就可能引起OOM,所有我這裏實用的是自定義View,實現刻度值複用
效果圖:
這裏主要是自定義View實現刻度共用
刻度滾動動畫:ValueAnimator
可實現自定義刻度值樣式
實例代碼:
rulerView.addOnCurrentUnitTextListener(new RulerView.OnCurrentUnitTextListener() {
DecimalFormat format = new DecimalFormat("0.00");
@Override
public void onCurrentUnitText(float text, float unit, float legend) {
tvHelloWord.setText(format.format(text));
}
});
rulerView.setOnFormatUnitTextListener(new RulerView.OnFormatUnitTextListener() {
private DecimalFormat format = new DecimalFormat("0");
@Override
public String onFormatText(float text, float unit, float legend) {
return format.format(text);
}
@Override
public int getDecimalDigits() {
return 0;
}
});
rulerView.setOnFormatUnitLegendTextListener(new RulerView.OnFormatUnitTextListener() {
private DecimalFormat format = new DecimalFormat("0");
@Override
public String onFormatText(float text, float unit, float legend) {
return "¥" + format.format(text);
}
@Override
public int getDecimalDigits() {
return 0;
}
});
rulerView.setCurrentUnit(10);