У меня возникают проблемы с сохранением представления сверху во время перехода активности. Изображение слева от карточки — это общий элемент, который расширяется, чтобы покрыть половину второго действия, и у меня есть FAB, который скользит снизу. У меня есть ImageView напитка как переход общего элемента, а FAB — это переход слайда снизу.
Во время анимации слайдов FAB он остается ниже ImageView, как вы можете видеть на втором рисунке. Однако после завершения анимации он появляется поверх ImageView, как вы можете видеть на третьем рисунке. У меня такая же проблема во время перехода выхода, когда он сразу появляется под ImageView, когда он начинает скользить.
Я хочу, чтобы FAB оставался поверх ImageView на протяжении всего процесса, как мне реализовать это?
Основная активность:
Вторичная активность, когда FAB все еще скользит:
Вторичная активность после завершения скольжения FAB:
XML-файл вторичного действия:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/drinkImage"
android:layout_width="match_parent"
android:layout_height="300dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:gravity="start"
android:transitionName="@string/drink_image_transition"
/>
<TextView
android:padding="8dp"
android:id="@+id/drinkName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:translationY="@dimen/detail_drink_name_vertical_offset"
android:textSize="24sp"
android:textColor="@color/text_primary"
android:transitionName="@string/drink_name_transition"
/>
<ImageButton
android:id="@+id/fab"
android:layout_width="@dimen/fab_size_normal"
android:layout_height="@dimen/fab_size_normal"
android:layout_margin="@dimen/add_button_margin"
android:translationX="@dimen/detail_fab_horizontal_offset"
android:translationY="@dimen/detail_fab_vertical_offset"
android:background="@drawable/fab_shape"
android:elevation="@dimen/elevation_low"
android:src="@drawable/fab_ic_add"
android:stateListAnimator="@anim/button_elevation"
android:transitionName="fab_transition"
/>
</RelativeLayout>
Метод onCreate() для вторичного действия:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.details_drink);
//grab Drink parcel
Drink d = getIntent().getParcelableExtra("drink");
//set up image
ImageView i = (ImageView) findViewById(R.id.drinkImage);
i.setImageDrawable(this.getResources().getDrawable(d.getImageResourceID(this)));
//set up text
TextView t = (TextView) findViewById(R.id.drinkName);
t.setText(d.name);
Transition ts = new Slide();
//don't want status bar and navigation bar to slide across screen
ts.excludeTarget(android.R.id.statusBarBackground, true);
ts.excludeTarget(android.R.id.navigationBarBackground, true);
ts.setDuration(3000);
getWindow().setEnterTransition(ts);
getWindow().setExitTransition(ts);
//This line gets it to work! As Pavel suggested
//getWindow().setSharedElementsUseOverlay(false);
}