Viewflipper双击第一个视图第三个视图出现

时间:2011-05-30 05:24:18

标签: android viewflipper

我是android的新手。我对视图翻板功能有疑问。我在视图翻板中有三个视图,当我双击第一个视图第三个视图时出现,当我双击第二个视图而不是第三个视图时,第一个视图出现。如何阻止这一点,以便双击它也只会进入下一个视图,任何想法?

这是代码

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;

        }

    });

    }
    }

3 个答案:

答案 0 :(得分:0)

问题在于设置显示子项 在按钮上单击ekgbutton您已设置flipper.setDisplayedChild(0);,这意味着将打开第一个视图。将其设为flipper.setDisplayedChild(2);

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

答案 1 :(得分:0)

您可以创建一个hasmap,将cutton对象存储为键,然后单击counter作为值。如果计数器的模数除数为零,则在每次单击时递增计数器,然后设置取消显示视图。通过这种方式,您可以处理双击事件。

由于 苏尼

答案 2 :(得分:0)

Jamesdroid我也遇到了同样的问题,问题的解决方案就是这样 1.单击功能检查按下哪个按钮_ 在你的情况下你有3个视图让它为v1,v2和v3现在也让你包括3个按钮,如按钮上的标签点击你将显示相应的标签。 2. 再次点击内部按钮,检查当前视图处于活动状态或显示,然后根据当前视图通过view.ShowNext()进入所需视图。

以下是您推荐的代码,其中我有三个观看次数(view_beverages,view_dimsum,view_appetizers)和theree按钮(标签)。

ViewFlipper mVf =(ViewFlipper)findViewById(R.id.MyViewFlipper); //我的ViewFilpper显示3个标签(1.Beverages,2.DimSum,3.Appetizers) public void onClick(查看v){         // Beverages选项卡点击         if(v == btn_beverages){

        btn_beverages.setBackgroundResource(R.drawable.beverages_on);
        btn_dimsum.setBackgroundResource(R.drawable.dimsum_off);
        btn_appetizers.setBackgroundResource(R.drawable.appetizers_off);

        View myCurrentView = mVf.getCurrentView();//Collecting the current displayed view.
        if (myCurrentView == view_beverages) {

        }
        if (myCurrentView == view_dimsum) {
            mVf.showNext();
            mVf.showNext();

        }
        if (myCurrentView == view_appetizer) {
            mVf.showNext();             
        }


    }
    // Dimsum tab click
    if (v == btn_dimsum) {

        btn_beverages.setBackgroundResource(R.drawable.beverages_off);
        btn_dimsum.setBackgroundResource(R.drawable.dimsum_on);
        btn_appetizers.setBackgroundResource(R.drawable.appetizers_off);

        View myCurrentView = mVf.getCurrentView();
        if (myCurrentView == view_beverages) {
            mVf.showNext();
        }
        if (myCurrentView == view_dimsum) {

        }
        if (myCurrentView == view_appetizer) {
            mVf.showNext();
            mVf.showNext();

        }

    }
    // Appetizer tab click
    if (v == btn_appetizers) {

        btn_beverages.setBackgroundResource(R.drawable.beverages_off);
        btn_dimsum.setBackgroundResource(R.drawable.dimsum_off);
        btn_appetizers.setBackgroundResource(R.drawable.appetizers_on);

        View myCurrentView = mVf.getCurrentView();
        if (myCurrentView == view_beverages) {
            mVf.showNext();
            mVf.showNext();
        }
        if (myCurrentView == view_dimsum) {
            mVf.showNext();
        }
        if (myCurrentView == view_appetizer) {

        }

    }