2015-12-21 2 views
4

Я использую анимацию при замене fragmentsreplace() из fragment transaction). Я установил анимации с setCustomAnimations(). My animation пытается совместить старый fragment с новым движением справа. Но проблема в том, что я вижу вид из старого fragment, даже если он уже перекрывается новым. И старые views исчезают только тогда, когда анимация завершена. Кроме того, когда новый fragment является сложным (listviews и т. Д.), Я вижу некоторые артефакты и мерцание при перекрытии. Это ужасно, как я могу избежать этого?Оверлей анимации фрагментации

Мой код для входа animation:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:ordering="together"> 


    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:propertyName="x" 
    android:valueType="floatType" 
    android:valueTo="0" 
    android:valueFrom="720" 
    android:duration="250" 
    android:zAdjustment="top"/> 

</set> 

UPDATE: о артефактами - это не их. Это были последствия плохого наложения. Я медленно смотрел анимацию. Итак, проблема в том, что старый фрагмент остается в TOP. Он полностью перекрывает новый при анимации.

+0

Возможный дубликат [уродливый переход фрагмента к поверхности с наложением] (http://stackoverflow.com/questions/14925060/ugly-fragment-transition-to-surfaceview-with-overlay) –

+1

У меня нет SurfaceView , также перекрытие на всех фрагментах плохо, не только сложные (со списками) –

ответ

0

Если у вас нет фона, установленного на новом фрагменте, который может вызвать странный внешний вид, о котором вы говорите. Если это так, просто установите цвет фона для нового фрагмента, который перекрывает первый.

android:background="@drawable/background" 
+0

нет, это не так, я уже пробовал это. –

1

Ваша проблема происходит потому, что вы используете тот же файл аниматора в входа и выхода из анимации, вы должны установить выходную анимацию старого фрагмента, отличного от входа один, как на другой стороне

transaction.setCustomAnimations(<enterAnimationResId>, <exitAnimationResId>);

где enterAnimationResId - это xml-файл, содержащий анимацию для ввода фрагмента, а exitAnimationResId - это xml-файл, содержащий анимацию, которая будет применяться при закрытии существующего фрагмента.

Смежные вопросы