Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

swap fragment in an activity via animation

I want to swap two fragment in an activity via animation.Suppose PageA is for fragement A and left side on the screen and PageB is for fragment B i.e. on the right side of the screen. Now i want that when i click a button on pageA then PageA will move to the right side of the screen with some transition animation.

I tried the below code to replace the position

FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.container, new FragB()); fragmentTransaction.commit(); 

Looking for some clue.

Thanks in advance.

like image 499
Deepak Goel Avatar asked Jan 16 '12 05:01

Deepak Goel


People also ask

How do you animate fragment transitions?

At a high level, here's how to make a fragment transition with shared elements: Assign a unique transition name to each shared element view. Add shared element views and transition names to the FragmentTransaction . Set a shared element transition animation.

How do you animate a fragment?

To animate the transition between fragments, or to animate the process of showing or hiding a fragment you use the Fragment Manager to create a Fragment Transaction . Within each Fragment Transaction you can specify in and out animations that will be used for show and hide respectively (or both when replace is used).

How do I replace a fragment?

Use replace() to replace an existing fragment in a container with an instance of a new fragment class that you provide. Calling replace() is equivalent to calling remove() with a fragment in a container and adding a new fragment to that same container. transaction. commit();


1 Answers

Old questiion and you probably already figured it out, but for future reference:

here's what you use to set a custom animation when you replace a fragment via code:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();  ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); ft.replace(R.id.fragment_container, newFragment, "fragment"); // Start the animated transition. ft.commit(); 

Here is an example of the slide_in_left animation:

<?xml version="1.0" encoding="utf-8"?> <set>   <translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="-100%"    android:toXDelta="0"    android:interpolator="@android:anim/decelerate_interpolator"    android:duration="500"/> </set> 

Note that this is the animation if you are using the compatibility library. Instead if you are using and SDK with native support for the FragmentManager then your animation will look like this:

<?xml version="1.0" encoding="utf-8"?> <set>   <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"     android:propertyName="x"      android:valueType="floatType"     android:valueFrom="-1280"     android:valueTo="0"      android:duration="500"/> </set> 

This is because the compatibility library does not support the new objectAnimator type and instead only implement the old animation framework.

like image 185
sciutand Avatar answered Nov 15 '22 14:11

sciutand