第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

檢查按鈕是否按住一段時(shí)間或是否只是單擊 ANDROID

檢查按鈕是否按住一段時(shí)間或是否只是單擊 ANDROID

弒天下 2022-12-28 16:52:34
我正在嘗試做一些非常簡(jiǎn)單的事情,但由于某種原因我無法讓它工作。我有兩個(gè)圓形按鈕。- 當(dāng)我只需單擊頂部(綠色)按鈕時(shí),我希望按鈕切換顏色并保持這種狀態(tài)。- 如果我按住一個(gè)按鈕 2 秒鐘,我希望只要我按住按鈕,顏色就會(huì)交換,但一旦我松開,就會(huì)恢復(fù)到原來的顏色。我正在嘗試使用 OnClickListener。我在兩種情況下使用開關(guān):MotionEvent.ACTION_DOWN 和 MotionEvent.ACTION_UP。(見下面的代碼)為了獲得按鈕被按住的持續(xù)時(shí)間,我在 while 循環(huán)中使用 System.currentTimeMillis() (當(dāng)按鈕被按住時(shí))-->(如果 timeElapsed > 2000){切換顏色}完整代碼如下: greenbutton.setOnTouchListener(new View.OnTouchListener() {        @Override        public boolean onTouch(View view, MotionEvent motionEvent) {            switch (motionEvent.getAction()) {                case MotionEvent.ACTION_DOWN:                    startTime = System.currentTimeMillis();                    while (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {                        currentTime = System.currentTimeMillis();                        elapsedTime = currentTime - startTime;                        if (elapsedTime > 500) {                            if (switched) {                                revertButtons();                                return true;                            } else {                                switchButtons();                                return true;                            }                        }                    }                case MotionEvent.ACTION_UP:                    if (switched) {                        revertButtons();                        elapsedTime = 0;                        currentTime = 0;                        startTime = 0;                        return true;                    } else {                        switchButtons();                        elapsedTime = 0;                        currentTime = 0;                        startTime = 0;                        return true;                    }            }            return false;        }    });
查看完整描述

2 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

嘗試使用預(yù)定義的方法 -

  1. onClickListener( () => {} )單擊

  2. onLongClickListener( () => {} )長時(shí)間點(diǎn)擊

這樣你就不需要計(jì)算用戶點(diǎn)擊的時(shí)間,并且通過運(yùn)行循環(huán)或線程你可以在長時(shí)間點(diǎn)擊時(shí)不斷改變顏色。

更新

正如評(píng)論中提到的,它只需要一個(gè)特定的時(shí)間使用以下算法-

  1. 長按按鈕啟動(dòng)計(jì)時(shí)器

  2. 2 秒后立即應(yīng)用結(jié)果

** 更新**

由于需要點(diǎn)擊時(shí)間,請(qǐng)遵循:

  1. 在按鈕定義之前創(chuàng)建一個(gè)計(jì)時(shí)器

  2. 使用長按列表器啟動(dòng)計(jì)時(shí)器

  3. 在停止計(jì)時(shí)器的動(dòng)作上,您會(huì)得到結(jié)果


查看完整回答
反對(duì) 回復(fù) 2022-12-28
?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

我找到了一個(gè)簡(jiǎn)單的解決方案來研究長按事件的工作原理。每次單擊視圖時(shí),都會(huì)延遲Runnable將類型CheckForLongPress添加到隊(duì)列中。如果延遲結(jié)束,OnLongClickListener則調(diào)用。如果在延遲結(jié)束之前有不同的事件,則將CheckForLongPress Runnable其從隊(duì)列中移除。


我只是覆蓋postDelayed(Runnable action, long delayMillis)視圖的公共方法來更改操作系統(tǒng)延遲


@Override public boolean postDelayed(Runnable action, long delayMillis) {

    boolean isLongPress = action.getClass().getSimpleName().equals("CheckForLongPress");

    return super.postDelayed(action, isLongPress ? LONG_PRESS_MILLIS : delayMillis);

}

我設(shè)置LONG_PRESS_MILLIS為 100,它正在工作!


希望能幫助到你!??!;)


圖片來源: MArtinCR


查看完整回答
反對(duì) 回復(fù) 2022-12-28
  • 2 回答
  • 0 關(guān)注
  • 112 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)