android- simple fade out and fade in animation for viewflipper

前端 未结 2 1544
一向
一向 2021-02-05 11:05

I\'m new to android and I don\'t know a lot about android animation . I\'ve a viewflipper and I want to animate between images inside it . This is the code :

 r         


        
2条回答
  •  生来不讨喜
    2021-02-05 11:25

    Refer these links, they also have the animation xml's:

    Link 1 & Link 2

    Example Class:

    public class ViewFlipperMainActivity extends Activity
    {
        private ViewFlipper viewFlipper;
        private float lastX;
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                     super.onCreate(savedInstanceState);
                     setContentView(R.layout.view_flipper_main);
                     viewFlipper = (ViewFlipper) findViewById(R.id.view_flipper);
        }
    
    
    
        // Method to handle touch event like left to right swap and right to left swap
        public boolean onTouchEvent(MotionEvent touchevent)
        {
         switch (touchevent.getAction())
         {
            // when user first touches the screen to swap
             case MotionEvent.ACTION_DOWN:
             {
                 lastX = touchevent.getX();
                 break;
            }
             case MotionEvent.ACTION_UP:
             {
             float currentX = touchevent.getX();
    
             // if left to right swipe on screen
             if (lastX < currentX)
             {
                  // If no more View/Child to flip
                 if (viewFlipper.getDisplayedChild() == 0)
                     break;
    
                 // set the required Animation type to ViewFlipper
                 // The Next screen will come in form Left and current Screen will go OUT from Right
                 viewFlipper.setInAnimation(this, R.anim.in_from_left);
                 viewFlipper.setOutAnimation(this, R.anim.out_to_right);
                 // Show the next Screen
                 viewFlipper.showNext();
             }
    
             // if right to left swipe on screen
             if (lastX > currentX)
             {
                 if (viewFlipper.getDisplayedChild() == 1)
                     break;
                 // set the required Animation type to ViewFlipper
                 // The Next screen will come in form Right and current Screen will go OUT from Left
                 viewFlipper.setInAnimation(this, R.anim.in_from_right);
                 viewFlipper.setOutAnimation(this, R.anim.out_to_left);
                 // Show The Previous Screen
                 viewFlipper.showPrevious();
             }
             break;
             }
            }
         return false;
        }
    }
    

    Fade In-Out Usiong Java Code:

    Animation fadeIn = new AlphaAnimation(0, 1);
    fadeIn.setInterpolator(new DecelerateInterpolator()); //add this
    fadeIn.setDuration(1500); //time in milliseconds
    
    Animation fadeOut = new AlphaAnimation(1, 0);
    fadeOut.setInterpolator(new AccelerateInterpolator()); //and this
    fadeOut.setStartOffset(1000);
    fadeOut.setDuration(1500); //time in milliseconds
    
    AnimationSet animation = new AnimationSet(false); //change to false
    animation.addAnimation(fadeIn);
    animation.addAnimation(fadeOut);
    this.setAnimation(animation);
    

    Animation Xml:

    Fade In:

    
    
      
    
    

    Fade Out:

    
    
      
    
    

    in_from_left.xml

    
        
    
    

    in_from_right.xml

    
        
    
    

    out_to_left.xml

    
          
    
    

    out_to_right.xml

    
          
    
    

    view_flipper_main.xml:

    
    
        
            
            
            
        
    
    

    EDIT:

    It's been more than 2 years and lot of people seem to be referring to this answer, so to help all with Material design transitions and some new transitions here are a couple of reference links.

    Animate all the things. Transitions in Android

    Material-Animations

提交回复
热议问题