2016-09-21 72 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