当前位置: 代码迷 >> Android >> 同时在片段与动画白色空白屏幕之间切换
  详细解决方案

同时在片段与动画白色空白屏幕之间切换

热度:51   发布时间:2023-08-04 10:46:42.0

我有问题,当我在片段之间切换白色屏幕出现在新片段出现之前我不知道什么是问题

这是我的动画

动画/ 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" />

动画/ 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" />

动画/ 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" />

这是我加载片段的函数

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;
}

我也有这个问题,因为所有出现的解决方案只是设置窗口背景,我真的没有到达任何地方。 比我想象的那样=>让我们试着在我推进透明的片段中设置rootview的背景。瞧,这就是诀窍。 所以我推送的片段的根视图在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">
  相关解决方案