4

I have problem that when i am switching between fragments white screen is appear before new fragment appear i don't know what is problem

Here is my animations

anim/fragment_slide_left_enter

<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="100%p"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toXDelta="0%p" />

<alpha
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromAlpha="0.0"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toAlpha="1.0" />

anim/fragment_slide_left_exit

<translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="0%p"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toXDelta="-100%p" />

<alpha
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromAlpha="1.0"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toAlpha="0.0" />

anim/fragment_slide_right_enter

 <translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="-100%p"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toXDelta="0%p" />

<alpha
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromAlpha="0.0"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toAlpha="1.0" />

**anim/fragment_slide_right_exit**

 <translate
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXDelta="0%p"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toXDelta="100%p" />

<alpha
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromAlpha="1.0"
    android:interpolator="@android:interpolator/decelerate_quint"
    android:toAlpha="0.0" />

Here is my function which load fragments

public void loadFragment(Fragment fragment, String tag, boolean isShow, String key, String value,boolean isBack)
{
    bundle.putString(key,value);
    fragment.setArguments(bundle);
     fragmentTransaction = fragmentManager.beginTransaction();
    if (OldFragment != null) {
        Log.d("fragment--->","yes------");
        fragmentTransaction.detach(OldFragment);
    }
        if(isShow){
       //fragmentTransaction.setCustomAnimations(R.anim.slide_in_right,R.anim.slide_out_left);
            fragmentTransaction.setCustomAnimations(R.anim.fragment_slide_left_enter,R.anim.fragment_slide_left_exit,R.anim.fragment_slide_right_enter,R.anim.fragment_slide_right_exit);
        }
    fragmentTransaction.replace(R.id.ll_fragment,fragment, tag);
    if(isBack){
        fragmentTransaction.addToBackStack(null);
    }
    fragmentTransaction.commit();
    OldFragment=fragment;
}
Divyata Chauhan
  • 279
  • 4
  • 21

1 Answers1

-1

I also had this problem and since all the solutions that came up were just setting the window background I wasn't really getting anywhere. Than I thought => let's just try to set the background of rootview in the fragment I'm pushing in to transparent.. And voila, this did the trick. So the rootview of the fragment that I'm pushing looks like this in xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">
Jordy
  • 1,764
  • 1
  • 22
  • 32