亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于先雙擊后單擊

如果先雙擊了,然后在動畫執行過程當中又單擊了,會怎么樣呢?

正在回答

3 回答

class?DoubleTapRunnable?implements?Runnable{
????@Override
????public?void?run()?{
????????currentProgress++;
????????if(currentProgress?<=?progress)?{
????????????invalidate();
????????????handler.postDelayed(doubleTapRunnable,50);
????????}?else?{
????????????handler.removeCallbacks(doubleTapRunnable);
????????????currentProgress?=?0;
????????}
????}
}

假如在雙擊的執行動畫中單擊,currentProgress在單擊事件中被賦值為50,而此時雙擊線程DoubleTapRunnable還未結束會進入到if(currentProgress <= progress)重繪一次,50ms后進入下一次雙擊線程,此時進入else塊,雙擊線程的回調被remove,而currentProgress也被賦值為0。單擊線程中又會調用invalidate();進行重繪,導致單擊動畫只有剛剛進入的一瞬間進度為50,而余下的絕大部分時間進度都為0

? ? ? ? 至于為什么雙擊動畫結束后再單擊不會出現這樣的BUG

雙擊結束后會執行雙擊線程中else塊中的這兩個語句

handler.removeCallbacks(doubleTapRunnable);
? ? ? ? ? ?currentProgress = 0;

此時雙擊線程的回調已被移除(remove),然后單擊為currentProgress賦值為50,動畫是正常的


總的來說就是雙擊和單擊這兩個線程的執行時間和順序的問題。

0 回復 有任何疑惑可以回復我~
#1

全是甘貨 提問者

非常感謝!
2017-10-16 回復 有任何疑惑可以回復我~

大贊!邏輯清晰了許多!

ezqczrtlqkmijhfk

0 回復 有任何疑惑可以回復我~

一起努力呢

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
360加速球核心效果實現
  • 參與學習       17952    人
  • 解答問題       20    個

Android開發仿360加速球核心效果,助小伙伴進階,學習之后收獲滿滿

進入課程

關于先雙擊后單擊

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號