В моем приложении я пытаюсь реализовать переход общего элемента между именем списка из одного действия и заголовком панели инструментов в следующем действии. Проблема, с которой я столкнулся, заключается в том, что общий элемент не анимируется так, как должен, вместо этого он анимируется вместе со всем переходом входа и выхода макета.
здесь страховой текст должен анимироваться отдельно от всей анимации.
Анимация действий при вызове выглядит следующим образом:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setSharedElementReturnTransition(TransitionInflater.from(this)
.inflateTransition(R.transition.trans_move));
// getWindow().setSharedElementExitTransition(new TransitionSet()
// .addTransition(new Fade()));
Slide slideTransition = new Slide();
slideTransition.setSlideEdge(Gravity.LEFT);
slideTransition.setDuration(getResources().getInteger(R.integer.anim_duration_long));
getWindow().setReenterTransition(slideTransition);
getWindow().setExitTransition(slideTransition);
}
setShareElementExitTransition не влияет на переход, поэтому закомментировал его
Намерение, используемое для запуска второго действия
ActivityOptionsCompat activityOptions
= ActivityOptionsCompat.makeSceneTransitionAnimation(
HomeActivity.this,
new Pair<>(view.findViewById(R.id.nameTextView),
SharedCertificatesActivity.ab_title)
);
Intent _intent=new Intent(mContext, SharedCertificatesActivity.class);
ActivityCompat.startActivity(HomeActivity.this,
_intent, activityOptions.toBundle());
Второе действие имеет следующие переходы сцен
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Re-enter transition is executed when returning to this activity
Slide slideTransition = new Slide();
slideTransition.setSlideEdge(Gravity.LEFT);
slideTransition.setDuration(getResources().getInteger(R.integer.anim_duration_medium));
Slide slideRightTransition = new Slide();
slideRightTransition.setSlideEdge(Gravity.RIGHT);
slideRightTransition.setDuration(getResources().getInteger(R.integer.anim_duration_medium));
// getWindow().setAllowReturnTransitionOverlap(true);
getWindow().setReenterTransition(slideRightTransition);
getWindow().setExitTransition(slideTransition);
// getWindow().setSharedElementEnterTransition(TransitionInflater.from(this)
// .inflateTransition(R.transition.trans_move));
ViewCompat.setTransitionName(title, ab_title);
}
я также нашел аналогичную проблему здесь на SO, но упомянутое там решение не сработало для меня. если это проблема, описанная выше, то макет для второго действия выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/primary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:fontFamily="sans-serif-medium"
android:text="Binder Name"
android:textColor="@color/_kAppearanceUINavigationBarTextColor"
android:textSize="20sp" />
</android.support.v7.widget.Toolbar>
<include layout="@layout/binder" />
</LinearLayout>
.
.
.
</android.support.design.widget.CoordinatorLayout>
Любая помощь будет высоко ценится