課程
/移動(dòng)開發(fā)
/Android
/360加速球核心效果實(shí)現(xiàn)
如果先雙擊了,然后在動(dòng)畫執(zhí)行過程當(dāng)中又單擊了,會(huì)怎么樣呢?
2017-07-22
源自:360加速球核心效果實(shí)現(xiàn) 3-4
正在回答
class?DoubleTapRunnable?implements?Runnable{ ????@Override ????public?void?run()?{ ????????currentProgress++; ????????if(currentProgress?<=?progress)?{ ????????????invalidate(); ????????????handler.postDelayed(doubleTapRunnable,50); ????????}?else?{ ????????????handler.removeCallbacks(doubleTapRunnable); ????????????currentProgress?=?0; ????????} ????} }
假如在雙擊的執(zhí)行動(dòng)畫中單擊,currentProgress在單擊事件中被賦值為50,而此時(shí)雙擊線程DoubleTapRunnable還未結(jié)束會(huì)進(jìn)入到if(currentProgress <= progress)重繪一次,50ms后進(jìn)入下一次雙擊線程,此時(shí)進(jìn)入else塊,雙擊線程的回調(diào)被remove,而currentProgress也被賦值為0。單擊線程中又會(huì)調(diào)用invalidate();進(jìn)行重繪,導(dǎo)致單擊動(dòng)畫只有剛剛進(jìn)入的一瞬間進(jìn)度為50,而余下的絕大部分時(shí)間進(jìn)度都為0
? ? ? ? 至于為什么雙擊動(dòng)畫結(jié)束后再單擊不會(huì)出現(xiàn)這樣的BUG
雙擊結(jié)束后會(huì)執(zhí)行雙擊線程中else塊中的這兩個(gè)語句
handler.removeCallbacks(doubleTapRunnable); ? ? ? ? ? ?currentProgress = 0;
此時(shí)雙擊線程的回調(diào)已被移除(remove),然后單擊為currentProgress賦值為50,動(dòng)畫是正常的
總的來說就是雙擊和單擊這兩個(gè)線程的執(zhí)行時(shí)間和順序的問題。
全是甘貨 提問者
大贊!邏輯清晰了許多!
ezqczrtlqkmijhfk
一起努力呢
舉報(bào)
Android開發(fā)仿360加速球核心效果,助小伙伴進(jìn)階,學(xué)習(xí)之后收獲滿滿
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-10-15
假如在雙擊的執(zhí)行動(dòng)畫中單擊,currentProgress在單擊事件中被賦值為50,而此時(shí)雙擊線程DoubleTapRunnable還未結(jié)束會(huì)進(jìn)入到if(currentProgress <= progress)重繪一次,50ms后進(jìn)入下一次雙擊線程,此時(shí)進(jìn)入else塊,雙擊線程的回調(diào)被remove,而currentProgress也被賦值為0。單擊線程中又會(huì)調(diào)用invalidate();進(jìn)行重繪,導(dǎo)致單擊動(dòng)畫只有剛剛進(jìn)入的一瞬間進(jìn)度為50,而余下的絕大部分時(shí)間進(jìn)度都為0
? ? ? ? 至于為什么雙擊動(dòng)畫結(jié)束后再單擊不會(huì)出現(xiàn)這樣的BUG
雙擊結(jié)束后會(huì)執(zhí)行雙擊線程中else塊中的這兩個(gè)語句
handler.removeCallbacks(doubleTapRunnable);
? ? ? ? ? ?currentProgress = 0;
此時(shí)雙擊線程的回調(diào)已被移除(remove),然后單擊為currentProgress賦值為50,動(dòng)畫是正常的
總的來說就是雙擊和單擊這兩個(gè)線程的執(zhí)行時(shí)間和順序的問題。
2022-03-28
大贊!邏輯清晰了許多!
ezqczrtlqkmijhfk
2017-10-21
一起努力呢