2013-11-14 37 views
0

我正在尋找一種方法來調用一個按鈕,並按住一秒鐘的功能。當按鈕被釋放時,應該調用另一個函數。如何檢查按鈕是否仍然點擊後第二

我在想一個onLongClickedListener但對我來說,因爲這是將要顯示的會留過長或過短的文字,這將無法正常工作。 我想TouchListener可以幫助我,因爲Action_Up事件會讓我選擇讓按鈕不再按下時文本消失。當按下按鈕時,Action_down事件給了我一個按鈕,我想我可以在按下按鈕時啓動計時器,等待一秒鐘,再次檢查按鈕是否仍然按下,然後調用函數(顯示文本)。

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 

    switch (v.getId()) { 
    // the button. I set bFertig.setOnTouchListener(this); in onCreate 
    case R.id.bFertig: 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      // everything works up to here 
      waitTimerNotif = new CountDownTimer(1000, 500) { 
       @Override 
       public void onTick(long arg0) {} 

       @Override 
       public void onFinish() { 
        // TODO Auto-generated method stub 
        // here im checking if the button still is pressed 
        if (bFertig.isPressed()) { 
         // It never goes into here 
         ShowNotifBox("Fertig", "fertig", false, false,false); 
        } 
       } 
      }.start(); 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      DissapearNotifBox(); 
      Log.d("Debug", "Button released"); 
     } 
     break; 
    } 
    return true; 
} 

對於XML按鈕:

<Button 
    android:id="@+id/bFertig" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="@drawable/fertigbutton" 
    android:gravity="center" 
    android:textColor="#ffffff" 
    android:textSize="18.5dp" 
    android:clickable="true"/> <!--Googleing suggested I need this for isPressed() to work but it didnt help 

任何想法,我做錯了什麼,或者爲什麼這個心不是工作?謝謝!

+0

沒有閱讀所有這些代碼,但不能設置,當你開始觸摸時間,然後比較,與當你釋放的時間? – Cruncher

+0

longClickListener實際上應該怎麼做,因爲它會使用用戶系統中所有其他應用程序使用的標準延遲 – njzk2

+0

@Cruncher不太明白你的意思。我不想在釋放按鈕後調用該函數,而是在按鈕被第一次按下之前按下一秒,直到釋放按鈕 – patsud

回答

0

你正在返回true,它告訴系統你正在處理觸摸事件,這意味着按鈕不是,這意味着它可能不會更新其按下的狀態。嘗試返回false。

+0

哇!那真的是這個問題。謝謝@Ootinii!關於如何檢查手指是否仍在按鈕上或已移開的任何想法?應該使用'MotionEvent.ACTION_MOVE'和'if'像http://goo.gl/XWxsHz,但是我可以找出替換rect的東西。 – patsud

+0

您是否在按鈕本身上實現了onTouch? – ootinii

+0

假設您正在按鈕視圖上實現觸摸偵聽器,您應該能夠檢查event.getX()> = v.getLeft()&& event.getX()<= v.getRight(),event.getY ()> = v.getTop()&& event.getY()<= v.getBottom(),你可以在ACTION_UP事件中檢查它們。 – ootinii

0

爲什麼不使用setOnLongClickListener功能? 這應該可以解決您的問題。 一個例子可以在這裏找到:setOnLongClickListener

+0

我知道如何使用OnLongClickListener但它的問題是,我想釋放按鈕時調用另一個函數。我試着讓一個LongClickListener啓動我的第一個函數和一個onTouchListener,它在釋放按鈕時獲取,然後啓動第二個funktion來隱藏第一個函數的文本。 – patsud

相關問題