android- simple fade out and fade in animation for viewflipper

前端 未结 2 1548
一向
一向 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:17

    Simple using Kotlin.

    First, set the animations:

    private fun setAnimations() {
        // in anim
        val inAnim = AlphaAnimation(0f, 1f)
        inAnim.duration = 600
        flipperView.inAnimation = inAnim
    
        // out anim
        val outAnim = AlphaAnimation(1f, 0f)
        outAnim.duration = 600
        flipperView.outAnimation = outAnim
    
    }
    

    And to flip (between two views) just call this function:

    fun onSendClick(view: View) {
        viewFlipper.displayedChild = if(flipperView.displayedChild == 0) 1 else 0
    }
    
    0 讨论(0)
  • 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:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/linear_interpolator">
      <alpha
          android:fromAlpha="0.1"
          android:toAlpha="1.0"
          android:duration="2000"
          />
    </set>
    

    Fade Out:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/linear_interpolator">
      <alpha
          android:fromAlpha="1.0"
          android:toAlpha="0.1"
          android:duration="2000"
          />
    </set>
    

    in_from_left.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
        <translate
            android:fromXDelta="-100%" android:toXDelta="0%"
               android:fromYDelta="0%" android:toYDelta="0%"
               android:duration="1400" />
    </set>
    

    in_from_right.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
        <translate
            android:fromXDelta="100%" android:toXDelta="0%"
               android:fromYDelta="0%" android:toYDelta="0%"
               android:duration="1400" />
    </set>
    

    out_to_left.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
          <translate android:fromXDelta="0%" android:toXDelta="-100%"
            android:fromYDelta="0%" android:toYDelta="0%"
            android:duration="1400"/>
    </set>
    

    out_to_right.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
          <translate android:fromXDelta="0%" android:toXDelta="100%"
            android:fromYDelta="0%" android:toYDelta="0%"
            android:duration="1400"/>
    </set>
    

    view_flipper_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ViewFlipper
            android:id="@+id/view_flipper"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <!--  The child Views/Layout to flip -->
            <ImageView
                android:layout_marginTop="15dp"
                android:id="@+id/imageView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/image1" />
            <ImageView
                android:layout_marginTop="15dp"
                android:id="@id/imageView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/image2" />
        </ViewFlipper>
    </LinearLayout>
    

    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

    0 讨论(0)
提交回复
热议问题