Joe Rakhimov
Joe Rakhimov

Reputation: 5083

How to press on first button, release on second button and get touch events of second button?

I have 2 buttons. This is what I am doing:

  1. I press button 1
  2. Then I move my finger to button 2
  3. I release on button 2

enter image description here

I set touch listeners for 2 buttons. It is logging touch events for both buttons:

public class MainActivity extends AppCompatActivity {

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

        Button button1 = (Button) findViewById(R.id.button1);
        Button button2 = (Button) findViewById(R.id.button2);

        button1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    Log.d("ButtonTouchTag", "Button 1: DOWN");
                } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    Log.d("ButtonTouchTag", "Button 1: MOVE");
                } else if (event.getAction() == MotionEvent.ACTION_UP) {
                    Log.d("ButtonTouchTag", "Button 1: UP");
                }

                return true;
            }
        });

        button2.setOnTouchListener(new View.OnTouchListener()

        {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    Log.d("ButtonTouchTag", "Button 2: DOWN");
                } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    Log.d("ButtonTouchTag", "Button 2: MOVE");
                } else if (event.getAction() == MotionEvent.ACTION_UP) {
                    Log.d("ButtonTouchTag", "Button 2: UP");
                }
                return false;
            }
        });

    }

}

This code logs following information:

As you can see, button 2 is not getting touch event.

Question: how to press on first button, release on second button and get touch events on second button?

Upvotes: 1

Views: 369

Answers (1)

Mohit Kacha
Mohit Kacha

Reputation: 504

 button2.setOnTouchListener(new View.OnTouchListener()

        {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    Log.d("ButtonTouchTag", "Button 2: DOWN");
                } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                    Log.d("ButtonTouchTag", "Button 2: MOVE");
                } else if (event.getAction() == MotionEvent.ACTION_UP) {
                    Log.d("ButtonTouchTag", "Button 2: UP");
                }
                return true;
            }
        });

it should return true.

Upvotes: 0

Related Questions