Я пишу пользовательский переход возврата, когда действие возвращается к вызывающей активности. Переход приводит к исчезновению содержимого финишной деятельности в конечную позицию вызывающей деятельности. Однако, когда эта анимация завершается, общий элемент вызывающей активности просто мигает в конечную позицию.Перемещаемый элемент return return blinks
Вот отрывок из моего перехода createAnimator
-х:
@Override
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
TransitionValues endValues) {
if (startValues == null || endValues == null) {
return null;
}
final ViewGroup startView = (ViewGroup) startValues.view;
final int startHeight = (int) startValues.values.get(PROPERTY_HEIGHT);
final int startWidth = (int) startValues.values.get(PROPERTY_WIDTH);
// Position at the original location
final int widthSpec = View.MeasureSpec.makeMeasureSpec(startWidth,
View.MeasureSpec.EXACTLY);
final int heightSpec = View.MeasureSpec.makeMeasureSpec(startHeight,
View.MeasureSpec.EXACTLY);
startView.measure(widthSpec, heightSpec);
startView.layout(0, 0, startWidth, startHeight);
final ObjectAnimator animator = ObjectAnimator.ofFloat(startView, "dummyValue", 0f, 1f);
animator.addUpdateListener(animation -> {
// Shift start view into end view's frame and fade out at the same time
});
return animator;
}
Я не могу найти способ сказать мнение в повторно ввести перехода исчезать в то же время. В приведенном выше аниматоре startValues.view
и endValues.view
, похоже, соответствуют одному и тому же объекту (поэтому мне пришлось переместить начальный вид в его исходное местоположение).