Android - 滑动按钮行时触发ontouch事件

时间:2016-09-21 08:32:01

标签: java 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仅在我按下按钮时被调用。当我拖过一个按钮时,我怎么能实现它的调用。我应该听什么样的活动?

1 个答案:

答案 0 :(得分:0)

要做到这一点,你必须使用onTouchListener,而不是仅当你按下按钮并释放它时触发的onClickListener。

即使onTouchListener适用于三个事件MotionEvent.ACTION_DOWN(按下时),MotionEvent.ACTION_MOVE(当您拖动手指时),MotionEvent.ACTION_UP(释放按钮时),您仍然需要按下按钮然后拖过它。 这意味着如果您先在按钮外单击,则无法在按钮上显示拖动事件。

如果你想在任何地方点击,然后检查按钮上的拖动事件,这仍然是一个不好的方法。

我建议你让所有视图都可以显示,并在整个视图上实现onTouchListener,并在手指放在视图的特定部分时进行咀嚼。

要做到这一点,使按钮不可点击是很重要的,否则它们将避免整个视图完全可以解决!

如果您想学习如何实现一个可查看的视图,您可以查看此存储库:

https://github.com/alessandroargentieri/JoyStick