2016-09-21 33 views
0

我的應用程序中有一排按鈕。我想實現的是:當我將手指拖過按鈕時,會調用一個方法。Android - 在滑動按鈕行時觸發ontouch事件

我的代碼看起來像這樣至今:

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="horizontal" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.a4web.example.MainActivity"> 

</LinearLayout> 

的Java:

public class MainActivity extends AppCompatActivity { 
LinearLayout rootView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    rootView = (LinearLayout) findViewById(R.id.activity_main); 

    for(int i=0; i<5; i++){ 
     Button button = new Button(this); 
     button.setText(i); 
     button.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       switch (event.getAction()){ 
        case MotionEvent.ACTION_DOWN: 
         doSomething(); 
         break; 
       } 

       return false; 
      } 
     }); 
     rootView.addView(button); 
    } 
} 

我的方法DoSomething的當我按下按鈕只能被調用。當我拖動一個按鈕時,我怎麼能實現它被調用。我應該聽什麼類型的活動?

+0

您可以覆蓋OnTouchListener讓你SwipeListener。使用此示例http://stackoverflow.com/a/12938787/3286614 – Rachit

回答

0

要做到這一點,您必須使用onTouchListener,而不是僅在按下按鈕並釋放它時觸發的onClickListener。

即使onTouchListener適用於三個事件MotionEvent.ACTION_DOWN(當您按下時),MotionEvent.ACTION_MOVE(當您拖動手指時),MotionEvent.ACTION_UP(釋放按鈕時),仍然必須按下按鈕,然後拖動它。 這意味着如果首先在按鈕外單擊,則無法在按鈕上顯示拖動事件。

如果你想點擊任何地方,然後檢查按鈕上的拖動事件,這仍然是一個不好的方法來做到這一點。

我建議你製作所有的視圖cliccable並在整個視圖和chech上實現一個onTouchListener,當你的手指位於視圖的特定部分時。

要做到這一點,重要的是使按鈕不可點擊,否則他們將避免整個視圖被解密!

如果您想了解如何實現cliccable視圖,你可以看看這個倉庫:

https://github.com/alessandroargentieri/JoyStick

相關問題