Имам проблем с поддържането на изглед отгоре по време на преход на дейност. Картината вляво на картата е споделен елемент, който се разширява, за да покрие половината от втората дейност, и имам 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);
}