3

У меня есть действие, которое по умолчанию загружено Fragment StatsDetailFragment.Reveal Transition for replace Fragment

При нажатии кнопки я заменяю фрагмент другим, используя следующий код.

getSupportFragmentManager().beginTransaction() 
       .replace(R.id.stats_detail_container, projectEntryListFragment, ProjectEntryListFragment.FRAGMENT_ID) 
       .addToBackStack(FRAGMENT_CHART) 
       .commit(); 

Я настройке Enter Переход на ProjectEntryListFragment с помощью пользовательского класса перехода

public class RevealTransition extends Visibility { 
    private final Point mEpicenter; 
    private final int mSmallRadius; 
    private final int mBigRadius; 
    private final long mDuration; 

    public RevealTransition(Point epicenter, int smallRadius, int bigRadius, long duration) { 
     mEpicenter = epicenter; 
     mSmallRadius = smallRadius; 
     mBigRadius = bigRadius; 
     mDuration = duration; 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    @Override 
    public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) { 
     Animator animator = ViewAnimationUtils.createCircularReveal(view, mEpicenter.x, mEpicenter.y, 
       mSmallRadius, mBigRadius); 
     animator.setDuration(mDuration); 
     return new WrapperAnimator(animator); 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    @Override 
    public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) { 
     Animator animator = ViewAnimationUtils.createCircularReveal(view, mEpicenter.x, mEpicenter.y, 
       mBigRadius, mSmallRadius); 
     animator.setDuration(mDuration); 
     return new WrapperAnimator(animator); 
    } 
} 

Переход работает хорошо. Но проблема, с которой я сталкиваюсь, заключается в том, что когда анимация раскрытия выполняется в ProjectEntryListFragment, StatsDetailFragment уже удаляется, и это приводит к тому, что анимация раскрытия воспроизводится поверх чистого фона. Я бы предпочел, чтобы это было воспроизведено над StatsDetailFragment так, чтобы StatsDetailFragment был виден, поскольку переход на показ воспроизводится в ProjectListFragment.

Я попробовал просто добавить новый фрагмент, но это просто дает мне ошибку при появлении backstack.

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v4.app.Fragment.getAllowReturnTransitionOverlap()' on a null object reference 

Любая помощь будет чрезвычайно оценена.

ответ

0

Установите аниматор для вашего фрагмента. Перед прогон анимации ваш корневой рисунок будет иметь цвет, в котором вы хотите, чтобы пульсация была be.in onAnimationEnd и onAnimationCanceled придать вашему корневому пути цвет, который вы хотите, чтобы его макет.

Также видимый «трюк» работает нестабильным (imo) Попробуйте ViewTreeObserver.

Надеюсь, что это поможет :)

+0

Я не использую анимацию, но переход. Но, тем не менее, я попытался установить TransitionListeners. Но, похоже, это не работает. Также не работает ViewTreeObserver .. :( –

+0

У меня была такая же проблема. Вот почему я сделал небольшой визуальный трюк на фрагменте после завершения перехода. Он имеет тот же визуальный эффект. Запустите этот код, как это, в вашем представлении oncreateview. . getViewTreeObserver() addOnGlobalLayoutListener (новый ViewTreeObserver.OnGlobalLayoutListener() { @Override общественного недействительными onGlobalLayout() { раскрыть(); ViewUtils.removeGlobalListeners (во-первых, это); } }); – locomain

+0

Итак, вы реализовали раскрытие как анимацию? метод в коде, я полагаю? –

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

  • Нет связанных вопросов^_^