4

In my app I have a shared element that looks something like this

 <FrameLayout
    android:id="@+id/container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/title"
        android:layout_margin="16dp"
        android:text="Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <ImageView
        android:id="@+id/image"
        android:src="@drawable/hero_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</FrameLayout>

In my activity I mark the image as the shared element and thus the image transitions to the next activity. However, I want to fade out the title before the image is transitioning. It looks like I should be able to get this working by using setSharedElementExitTransition() and setting the title as a target, but whatever I try, that animation appears not to work and the transitioning image is drawn over the snapshotted title.

I've read through https://halfthought.wordpress.com/2014/12/08/what-are-all-these-dang-transitions/ by George Mount and looked through his excellent answers here on SO, but I just need a little bit more help :)

4

1 に答える 1

3

setTransitionName("text")これは、タイトルビューで呼び出されると仮定して、基本を機能させる方法です

  1. アクティビティ A で適切な共有要素終了アニメーションを設定します。

    getWindow().setSharedElementExitTransition(new TransitionSet().
                addTransition(new Fade().addTarget("text"));
    
  2. が呼び出された後startActivity()、 を使用してタイトル テキスト ビューの可視性を変更しますsetVisibility(View.INVISIBLE)。これは、フェードを機能させるために必要です。

ビューをに設定することINVISIBLEは、私が見逃していた重要なステップであり、ウィンドウ終了アニメーションも設定していました。ただし、 を使用してウィンドウの戻り​​アニメーションを設定する必要がありましたWindow.setReturnTransition()

于 2015-01-12T19:56:38.690 に答える