title: Motion action up when moving from view to view without lifting finger from the screen
body: <p>This is my third question on the same topic. I am making a <strong>phone dialer app</strong> for <strong>blind people</strong> for a client and I want to move from button to button without finger lifting the screen and playing sound of the number when finger stop on button and if he want that button to get typed he left his finger and so on I found this code in previous question and it work only if finger is moving but if I lift my finger I can't get anything to happen, so my question how to get to get action when I lift my finger from the button and <strong>how deal with every button individually?</strong></p>
  
  <pre><code>package com.example.touch;
  
  import android.app.Activity;
  import android.os.Bundle;
  import android.view.MotionEvent;
  import android.view.View;
  import android.widget.Button;
  import android.widget.RelativeLayout;
  import android.widget.TextView;
  
  public class MainActivity extends Activity {
  
      MyButton b1, b2, b3, b4;
  
      int b1x1, b1x2, b1y1, b1y2;
  
      private TextView xcordview;
      private TextView ycordview;
      private TextView buttonIndicator;
      private RelativeLayout touchview;
      private static int defaultStates[];
      private Button mLastButton;
      private final static int[] STATE_PRESSED = {
              android.R.attr.state_pressed,
              android.R.attr.state_focused  
                      | android.R.attr.state_enabled };
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
  
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          xcordview = (TextView) findViewById(R.id.textView4);
          ycordview = (TextView) findViewById(R.id.textView3);
          buttonIndicator = (TextView) findViewById(R.id.button_indicator);
          touchview = (RelativeLayout) findViewById(R.id.relativelayout);
  
          b1 = (MyButton) findViewById(R.id.button1);
          b2 = (MyButton) findViewById(R.id.button2);
          b3 = (MyButton) findViewById(R.id.button3);
          b4 = (MyButton) findViewById(R.id.button4);
          defaultStates = b1.getBackground().getState();
  
      }
  
      @Override
      protected void onResume() {
          // TODO Auto-generated method stub
          super.onResume();
  
          touchview.setOnTouchListener(new View.OnTouchListener() {
  
              private boolean isInside = false;
  
              @Override
              public boolean onTouch(View v, MotionEvent event) {
  
                  int x = (int) event.getX();
                  int y = (int) event.getY();
  
                  xcordview.setText(String.valueOf(x));
                  ycordview.setText(String.valueOf(y));
  
                  for (int i = 0; i &lt; touchview.getChildCount(); i++) {
                      View current = touchview.getChildAt(i);
                      if (current instanceof Button) {
                          Button b = (Button) current;
  
                          if (!isPointWithin(x, y, b.getLeft(), b.getRight(), b.getTop(),
                                  b.getBottom())) {
                              b.getBackground().setState(defaultStates);
                              b.getBackground().setAlpha(255);
                          }
  
                          if (isPointWithin(x, y, b.getLeft(), b.getRight(), b.getTop(),
                                  b.getBottom())) {
                              b.getBackground().setState(STATE_PRESSED);
                              b.getBackground().setAlpha(150);
                              b.performClick();
  
                              if (b != mLastButton) {
                                  mLastButton = b;
                                  buttonIndicator.setText(mLastButton.getText());
                              }
                          }
  
                      }
                  }
                  return true;
              }
  
          });
  
      }
  
      @Override
      public void onWindowFocusChanged(boolean hasFocus) {
          // TODO Auto-generated method stub
          super.onWindowFocusChanged(hasFocus);
      }
  
      static boolean isPointWithin(int x, int y, int x1, int x2, int y1, int y2) {
          return (x &lt;= x2 &amp;&amp; x &gt;= x1 &amp;&amp; y &lt;= y2 &amp;&amp; y &gt;= y1);
      }
  }
  </code></pre>