2014-01-07 43 views
1

我正在使用門控制單元來控制車窗。 我有4個按鈕(自動上下,上下)。他們做得很好,但我希望單個向上和向下按鈕能夠像真正的汽車一樣反應。如果我點擊很長時間,只要點擊按鈕,它們就會移動。有沒有像button.isClicked()?

我試圖用OnTouchListener實現它,它甚至可以工作,但只有當我在按鈕上移動時。如果我只是點擊並握住我的手指,它會做一個短暫的單一動作,然後什麼也沒有,直到我移動手指。

有沒有像isClicked()方法?我試過isActivated,isPressed,isSelected,重點突出,但沒有一個解決了我的問題。

+2

可能重複[檢測與Android的長按](http://stackoverflow.com/questions/7919865/detecting-a-long-press-with-android) – Max

+0

thx爲您的答案,我搜索了很多通過谷歌,但沒有找到那些話題 – Fraggles

回答

0

您必須在onTouch方法中自己編程: 您所描述的情況是因觸摸事件觸發時使用param Event.DOWN觸發的,然後使用參數Event.MOVE在手指移動時觸發事件,最後使用Event.UP釋放時。

所以,你將不得不檢測向下觸摸事件,啓動計時器會把窗戶每隔X毫秒秒,再停檢測觸摸完成事件

這裏的時候是一個例子:

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    if(event.getAction()==MotionEvent.ACTION_DOWN) 
    { 
     startTimer(); // The timer should repeatly call itself 

    } 
    else if(event.getAction()==MotionEvent.ACTION_UP) 
    { 
     stopTimer(); // The timer should stop 

    } 
} 

編輯: 如果您只需要一個isClicked()方法,就可以將布爾值存儲爲類變量:在上面的代碼中,將「startTimer()」替換爲「mClicked = true」,將「 stopTimer()「通過」mClicked = false「。然後在你的類的任何地方,你將能夠檢查按鈕當前點擊

0

使用選擇您實現:使一個XML文件中像這樣

只是做一個diresctory在名爲「繪製」:

<?xml version="1.0" encoding="utf-8"?> 

<item android:state_focused="true"><color android:color="@color/red" /> 
</item> 
<item android:state_pressed="true"><color android:color="@color/red" /> 
</item> 
<item android:state_focused="false"><color android:color="@color/white" /> 
</item> 
<item android:state_pressed="false"><color android:color="@color/white" /> 
</item> 

現在

在佈局文件:給這個可繪製的按鈕背景:

android:background="@drawable/your_file" 

它會工作。