MagicIndicator icon indicating copy to clipboard operation
MagicIndicator copied to clipboard

根据滑出滑入进度动态设置textsize,title会抖动

Open liangtian123 opened this issue 5 years ago • 1 comments

` @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); }`

liangtian123 avatar Nov 13 '19 08:11 liangtian123

通过打印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); }

liangtian123 avatar Nov 13 '19 10:11 liangtian123