MagicIndicator
MagicIndicator copied to clipboard
根据滑出滑入进度动态设置textsize,title会抖动
` @Override public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) { super.onEnter(index, totalCount, enterPercent, leftToRight); // 实现颜色渐变 // setScaleX(mMinScale + (1.0f - mMinScale) * enterPercent); // setScaleY(mMinScale + (1.0f - mMinScale) * enterPercent); setTextSize(13+13*enterPercent); // setTypeface(Typeface.DEFAULT_BOLD); }
@Override
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
super.onLeave(index, totalCount, leavePercent, leftToRight); // 实现颜色渐变
// setScaleX(1.0f + (mMinScale - 1.0f) * leavePercent); // setScaleY(1.0f + (mMinScale - 1.0f) * leavePercent); setTextSize(26-13*leavePercent); // setTypeface(Typeface.DEFAULT); }`
通过打印log原因找到了,实际的滑动enterPercent值和我们的手指滑动是有延迟的,也就是说我们感觉已经滑动结束了,但是enterPercent还在变动,并且在0.96之后的值重复率很大;所以我们判断当enterPercent值小于0.96时才去改变textsize,离场同样,解决:
@Override
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
super.onEnter(index, totalCount, enterPercent, leftToRight); // 实现颜色渐变
// setScaleX(mMinScale + (1.0f - mMinScale) * enterPercent); // setScaleY(mMinScale + (1.0f - mMinScale) * enterPercent); if (enterPercent < 0.96) { setTextSize(13 + 13 * enterPercent); } System.out.println("bbbbbbbb" + enterPercent); // setTypeface(Typeface.DEFAULT_BOLD); }