androidtouch-eventmotioneventanimationdrawable

Stopping drawable animation after first loop


My problem is trying to figure out how to stop the drawable animation after it iterated though the images (eg. it being back to the grapes image). I certainly can't use the method I implemented in .ACTION.DOWN so can anybody help me with this.

    public boolean onTouchEvent (MotionEvent event){
        Drawable currentFrame, checkFrame;
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            if (fruitAnimation.isRunning()) {
                fruitAnimation.stop();
                //The variable that will guard the frame number
                int frameNumber = 0;
                //Get the frame of the animation
                //Drawable currentFrame, checkFrame;
                currentFrame = fruitAnimation.getCurrent();
                //checks the position of the frame.
                for (int i = 0; i < fruitAnimation.getNumberOfFrames(); i++) {
                    checkFrame = fruitAnimation.getFrame(i);
                    if (checkFrame == currentFrame) {
                        frameNumber = i;
                        break;
                    }

                }
                String fruit = "";

                switch (frameNumber) {
                    case 0:
                        fruit = "Grapes";
                        break;
                    case 1:
                        fruit = "Lemon";
                        break;
                    case 2:
                        fruit = "Orange";
                        break;
                    case 3:
                        fruit = "Pear";
                        break;
                    case 4:
                        fruit = "Strawberry";
                        break;


                }
                Toast.makeText(this, fruit, Toast.LENGTH_SHORT).show();

            }else {
                fruitAnimation.start();


            }
            return true;
        }

        return super.onTouchEvent(event);
    }

Solution

  • You most likely doing this wrong way. Since there's animation listener you can utilize to monitor your animation, I'd set the animation to one-time run and then in my listener, in its onAnimationEnd() I'd check if I reached my limit and if not, start the animation again.