Search code examples
androidviewflipper

Viewflipper on double clicking the firstview third view appearing


I am newbie to android. I have a doubt regarding the view flipper functionality. I have three views in my view flipper, when I double click on the first view third view appearing and also when I double click on the second view instead of third view first view is appearing. how to stop this so that with double click also it will go to the next view only, any Idea?

here is the code

public class gif extends Activity {
    ViewFlipper flipper;
  //    RelativeLayout r1 = (RelativeLayout)findViewById(R.id.second_view);



    private Animation inFromTopAnimation() {

    Animation inFromTop = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
    Animation.RELATIVE_TO_PARENT,  -1.0f, Animation.RELATIVE_TO_PARENT,   0.0f
    );
    inFromTop.setDuration(1000);
    inFromTop.setInterpolator(new AccelerateInterpolator());
    return inFromTop;
    }
    private Animation outToBottomAnimation() {
    Animation outtoBottom = new TranslateAnimation(
      Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
      Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  +1.0f
    );
    outtoBottom.setDuration(1000);
    outtoBottom.setInterpolator(new AccelerateInterpolator());
    return outtoBottom;
    }

    private Animation outToTopAnimation() {
    Animation inFromTop = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
    Animation.RELATIVE_TO_PARENT,  +1.0f, Animation.RELATIVE_TO_PARENT,   0.0f
    );
    inFromTop.setDuration(1000);
    inFromTop.setInterpolator(new AccelerateInterpolator());
    return inFromTop;
    }
    private Animation outFromBottomAnimation() {
    Animation outFromBottom = new TranslateAnimation(
      Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
      Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  -1.0f
    );
    outFromBottom.setDuration(1000);
    outFromBottom.setInterpolator(new AccelerateInterpolator());
    return outFromBottom;
    }



    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     flipper = (ViewFlipper) findViewById(R.id.flipper);
     ImageView imgview1 = (ImageView) findViewById(R.id.imageview1);

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

     imgview1.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
             flipper.setInAnimation(inFromTopAnimation());
             flipper.setOutAnimation(outToBottomAnimation());
             flipper.showNext();      
         }
     });

     button2.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
             flipper.setInAnimation(outToTopAnimation());
             flipper.setOutAnimation(outFromBottomAnimation());
             flipper.showPrevious();

         }

     });


    }

     @Override
     public  void  onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
     ImageView imgview1 = (ImageView)findViewById(R.id.imageview1);                                        
     imgview1.setVisibility(ImageView.VISIBLE);
     imgview1.setBackgroundResource(R.anim.topimageview);

     AnimationDrawable frameAnimation =
     (AnimationDrawable) imgview1.getBackground();

     if (frameAnimation.isRunning()) {
        frameAnimation.stop();
     }

     else {
        frameAnimation.stop();
        frameAnimation.start();
     }

     ImageView imgview2 = (ImageView)findViewById(R.id.imageview2);                                        
     imgview2.setVisibility(ImageView.VISIBLE);
     imgview2.setBackgroundResource(R.anim.rectbackground);

     AnimationDrawable frameAnimation1 =
     (AnimationDrawable) imgview2.getBackground();

     if (frameAnimation1.isRunning()) {
        frameAnimation1.stop();
     }

     else {
        frameAnimation1.stop();
        frameAnimation1.start();
     } 
     ImageView imgview3 = (ImageView)findViewById(R.id.imageview3);                                        
     imgview3.setVisibility(ImageView.VISIBLE);
     imgview3.setBackgroundResource(R.anim.background1);

     AnimationDrawable frameAnimation2 =
     (AnimationDrawable) imgview3.getBackground();

     if (frameAnimation2.isRunning()) {
        frameAnimation2.stop();
     }

     else {
        frameAnimation2.stop();
        frameAnimation2.start();
     }
     ImageView imgView = (ImageView)findViewById(R.id.imageview01);                                        
     imgView.setVisibility(ImageView.VISIBLE);
     imgView.setBackgroundResource(R.anim.background);

     AnimationDrawable frameAnimation3 =
     (AnimationDrawable) imgView.getBackground();

     if (frameAnimation3.isRunning()) {
        frameAnimation3.stop();
     }

     else {
        frameAnimation3.stop();
        frameAnimation3.start();
     }
     ImageView imgview02 = (ImageView)findViewById(R.id.imageview02);                                        
     imgview02.setVisibility(ImageView.VISIBLE);
     imgview02.setBackgroundResource(R.anim.background3);

     AnimationDrawable frameAnimation5 =
     (AnimationDrawable) imgview02.getBackground();

     if (frameAnimation5.isRunning()) {
        frameAnimation5.stop();
     }

     else {
        frameAnimation5.stop();
        frameAnimation5.start();
     }

     ImageView imgview03 = (ImageView)findViewById(R.id.imageview03);                                        
     imgview03.setVisibility(ImageView.VISIBLE);
     imgview03.setBackgroundResource(R.anim.background2);

     AnimationDrawable frameAnimation4 =
     (AnimationDrawable) imgview03.getBackground();

     if (frameAnimation4.isRunning()) {
        frameAnimation4.stop();
     }

     else {
        frameAnimation4.stop();
        frameAnimation4.start();
     }

     ImageView imgview04 = (ImageView)findViewById(R.id.imageview4);                                        
     imgview04.setVisibility(ImageView.VISIBLE);
     imgview04.setBackgroundResource(R.anim.background4);

     AnimationDrawable frameAnimation6 =
     (AnimationDrawable) imgview04.getBackground();

     if (frameAnimation6.isRunning()) {
        frameAnimation6.stop();
     }

     else {
        frameAnimation6.stop();
        frameAnimation6.start();
     }
    ;
    final ImageView hearttap =(ImageView)findViewById(R.id.hearttap);
  // final View second = null ;

    Button ekgbutton = (Button)findViewById(R.id.ekgbutton);

    final ImageView i2 = (ImageView) findViewById(R.id.imageview02);
     final ImageView i3 = (ImageView) findViewById(R.id.imageview03);
     final ImageView i4 = (ImageView) findViewById(R.id.imageview04);
     final ImageView i5 = (ImageView) findViewById(R.id.imageview05);
     final ImageView i6 = (ImageView) findViewById(R.id.imageview06);
     final ImageView i7 = (ImageView) findViewById(R.id.imageview07);


    hearttap.setOnTouchListener(new View.OnTouchListener() {

        private Animation inFromRightAnimation() {

            Animation inFromRight = new TranslateAnimation(
            Animation.RELATIVE_TO_PARENT,  +1.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
            Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f

            );
            inFromRight.setDuration(500);
            inFromRight.setInterpolator(new AccelerateInterpolator());
            return inFromRight;
            }
            private Animation outToLeftAnimation() {
            Animation outtoLeft = new TranslateAnimation(
             Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  -1.0f,
             Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
            );
            outtoLeft.setDuration(500);
            outtoLeft.setInterpolator(new AccelerateInterpolator());
            return outtoLeft;
            }


        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
        //  r1.setVisibility(View.GONE);

            i2.setVisibility(View.GONE);
            i3.setVisibility(View.GONE);
            i4.setVisibility(View.GONE);
            i5.setVisibility(View.GONE);
            i6.setVisibility(View.GONE);
            i7.setVisibility(View.GONE); 



             flipper.setInAnimation(inFromRightAnimation());
             flipper.setOutAnimation(outToLeftAnimation());
             flipper.showNext();

           //  flipper.getChildAt(2)
             flipper.setDisplayedChild(2);


           // WebView  webview1= (WebView)findViewById(R.id.ekgwebview1);
        //   webview1.loadUrl("C://Users/Android/Desktop/bg only.gif");
         // flipper.clearDisappearingChildren();

        // flipper.dispatchWindowVisibilityChanged(2);
             flipper.setEnabled(true);

             if (hearttap.onTouchEvent(event))


                 return true;
             else
                 return false;         

        }
    });

 ekgbutton.setOnTouchListener(new View.OnTouchListener() {
     private Animation inFromLeftAnimation() {
            Animation inFromLeft = new TranslateAnimation(
            Animation.RELATIVE_TO_PARENT,  -1.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
            Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
            );
            inFromLeft.setDuration(500);
            inFromLeft.setInterpolator(new AccelerateInterpolator());
            return inFromLeft;
            }
            private Animation outToRightAnimation() {
            Animation outtoRight = new TranslateAnimation(
             Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  +1.0f,
             Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
            );
            outtoRight.setDuration(500);
            outtoRight.setInterpolator(new AccelerateInterpolator());
            return outtoRight;
            }

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            i2.setVisibility(View.GONE);
            i3.setVisibility(View.GONE);
            i4.setVisibility(View.GONE);
            i5.setVisibility(View.GONE);
            i6.setVisibility(View.GONE);
            i7.setVisibility(View.GONE);    

            flipper.setInAnimation(inFromLeftAnimation());
             flipper.setOutAnimation(outToRightAnimation());
             flipper.showPrevious(); 
             flipper.setEnabled(true);

             //  flipper.getChildAt(0);
            flipper.setDisplayedChild(0);

            return true;

        }

    });

    }
    }

Solution

  • The issue is in setting display child On button click of ekgbutton You have set flipper.setDisplayedChild(0); which means first view will open. make it as flipper.setDisplayedChild(2);

    flipper.setDisplayedChild(0) = display first view
    flipper.setDisplayedChild(1) = display second view
    flipper.setDisplayedChild(2) = display third view