title: Android ViewFlipper Touch Event
body: <p>In my Android project I used ViewFlipper for flipping child. For this I used customized flipper. In this I override onTouchEvent().
  Also flipper contain images in each child. But when I try to flip flipper it not get touch event , but when I override ViewGroup method onInterceptTouchEvent() &amp; return true, then flipping is done but due to this my OnclikEvent() on each image is not get.
  I am not getting where is problem. [But when I return false from onInterceptTouchEvent() then click event get but touch event not get.]
  Here I attach my code. Please give me right way to resolve this issue.
  Thank You</p>
  
  <p>Code ViewFlipper:</p>
  
  <pre><code>import android.content.Context;
  import android.util.AttributeSet;
  import android.util.Log;
  import android.view.MotionEvent;
  import android.view.animation.Animation;
  import android.view.animation.AnimationUtils;
  import android.widget.Toast;
  import android.widget.ViewFlipper;
  public class MyViewFlipper extends ViewFlipper {
  
  static final String logTag = "ViewFlipper";
  static final int MIN_DISTANCE = 30;
  private float downX, downY, upX, upY;
  Animation slideLeftIn;
  Animation slideLeftOut;
  Animation slideRightIn;
  Animation slideRightOut;
  Context context;
  ViewFlipper viewFlipper;
  
  public MyViewFlipper(Context context) {
      super(context);
      viewFlipper=this;
       this.context=context;
       System.out.println("I am in MyFlipper() counstructor...");
  }
  
  public MyViewFlipper(Context context, AttributeSet attrs) {
      super(context, attrs);
      this.context=context;
       viewFlipper=this;
       System.out.println("I am in MyFlipper() counstructor...");
       slideLeftIn = AnimationUtils.loadAnimation(context, R.anim.slide_left_in);
       slideLeftOut = AnimationUtils.loadAnimation(context, R.anim.slide_left_out);
       slideRightIn = AnimationUtils.loadAnimation(context, R.anim.slide_right_in);
       slideRightOut = AnimationUtils.loadAnimation(context, R.anim.slide_right_out);
  }
  @Override
  public boolean onTouchEvent(MotionEvent event) {
       switch (event.getAction()) {
          case MotionEvent.ACTION_DOWN: {
              downX = event.getX();
              downY = event.getY();
              return true;
          }
          case MotionEvent.ACTION_UP: {
              upX = event.getX();
              upY = event.getY();
              float deltaX = downX - upX;
              float deltaY = downY - upY;
              // swipe horizontal?
              if (Math.abs(deltaX) &gt; MIN_DISTANCE) {
                  // left or right
                  if (deltaX &lt; 0) {
                      this.onLeftToRightSwipe();
                      return true;
                  }
                  if (deltaX &gt; 0) {
                      this.onRightToLeftSwipe();
                      return true;
                  }
              } else {
                  if(Math.abs(deltaX)&lt;15){
                      onClickEvent();
                  }
                  //Log.i(logTag, "Swipe was only " + Math.abs(deltaX)
                  //        + " long, need at least " + MIN_DISTANCE);
              }
              // swipe vertical?
              if (Math.abs(deltaY) &gt; MIN_DISTANCE) {
                  // top or down
                  if (deltaY &lt; 0) {
                      this.onTopToBottomSwipe();
                      return true;
                  }
                  if (deltaY &gt; 0) {
                      this.onBottomToTopSwipe();
                      return true;
                  }
              } else {
                  Log.i(logTag, "Swipe was only " + Math.abs(deltaX)
                          + " long, need at least " + MIN_DISTANCE);
              }
              return true;
          }
          }
          return false;
  }
  
      public void onRightToLeftSwipe() {
  
      viewFlipper.setInAnimation(slideLeftIn);
      viewFlipper.setOutAnimation(slideLeftOut);
      viewFlipper.showNext();
  }
  public void onLeftToRightSwipe() {
  
      viewFlipper.setInAnimation(slideRightIn);
      viewFlipper.setOutAnimation(slideRightOut); 
      viewFlipper.showPrevious();
  }
  public void onTopToBottomSwipe() {
      Log.i(logTag, "onTopToBottomSwipe!");
      // activity.doSomething();
  }
  public void onBottomToTopSwipe() {
      Log.i(logTag, "onBottomToTopSwipe!");
      // activity.doSomething();
  }
  
  public void onClickEvent(){
      Toast.makeText(context, "Click",Toast.LENGTH_SHORT);
  }
  @Override
  public boolean onInterceptTouchEvent(MotionEvent ev) {
      return true;//Here if true then Flipping done
                          //And  if false then click event done. 
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Code Activity:</p>
  
  <pre><code>import android.app.Activity;
  import android.os.Bundle;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.ImageView;
  import android.widget.LinearLayout;
  import android.widget.TextView;
  public class ViewFlipperDemo extends Activity implements OnClickListener{
  MyViewFlipper myFlipper;
  LinearLayout mainLayout;
  ImageView img1,img2,img3,img4,img5,img6,img7,img8,img9,img10;
  LayoutInflater inflater;
  TextView txt;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      myFlipper=(MyViewFlipper) findViewById(R.id.viewFlipper);
      txt=(TextView) findViewById(R.id.txt);
      txt.setOnClickListener(this);
  
      inflater=LayoutInflater.from(getApplicationContext());
      img1=(ImageView)inflater.inflate(R.layout.image, null);
      img2=(ImageView)inflater.inflate(R.layout.image, null);
      img3=(ImageView)inflater.inflate(R.layout.image, null);
      img4=(ImageView)inflater.inflate(R.layout.image, null);
      img5=(ImageView)inflater.inflate(R.layout.image, null);
  
  
      myFlipper.addView(img1);
      myFlipper.addView(img2);
      myFlipper.addView(img3);
      myFlipper.addView(img4);
      myFlipper.addView(img5);
  
      System.out.println("Count "+myFlipper.getChildCount());
  
      img1.setOnClickListener(this);
      img2.setOnClickListener(this);
      img3.setOnClickListener(this);
      img4.setOnClickListener(this);
      img5.setOnClickListener(this);
    }
      @Override
  public void onClick(View v) {
          System.out.println("OnClik Image"); 
          txt.setText("Current Child Index : "+myFlipper.getDisplayedChild());
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Code main.xml :</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:-Orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:id="@+id/mainLayout"&gt;
   &lt;TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/txt"
      android:background="#0000ff"/&gt;   
   &lt;Benchmark.ViewFlipper1.MyViewFlipper  
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/viewFlipper"
      android:background="#ff0000"
      &gt;&lt;/Benchmark.ViewFlipper1.MyViewFlipper  &gt; 
  &lt;/LinearLayout&gt;
  Code image.xml
  &lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:-Src="@drawable/big_image"&gt;
   &lt;/ImageView&gt;
  </code></pre>