4

我正在努力在我的应用程序上进行漂亮的过渡。我成功共享 1 个元素,但在共享多个元素时失败。以下代码仅对 3 个共享元素中的一个元素进行动画处理。我不知道为什么。这似乎是因为布局 xml 文件中列出的最后一个视图。

这是我所做的:
在我的主题中:

<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>

在活动 OnCreate :

getWindow().setSharedElementExitTransition(TransitionInflater.from(this).inflateTransition(R.transition.change_image_transform));

在 Activity Clic 监听器中:

ImageView header = (ImageView) findViewById(R.id.iv_header);
ImageView tv_menu_home = (ImageView) findViewById(R.id.tv_menu_home);
ImageView tv_menu_prefs = (ImageView) findViewById(R.id.tv_menu_prefs);

ActivityOptions optionsCompat = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this
                        ,Pair.create((View)tv_menu_prefs,tv_menu_prefs.getTransitionName())
                        ,Pair.create((View)tv_menu_home,tv_menu_home.getTransitionName())
                        ,Pair.create((View)header,header.getTransitionName())
                );

在 change_image_transform.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <changeImageTransform />
</transitionSet>

在两个布局 xml

...
<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_menu_home"
        android:src="@drawable/bouton_home"
        android:contentDescription="@string/hint_accueil_desc"
        android:transitionName="MyTransitionHome"
        />
...
<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_menu_prefs"
        android:src="@drawable/bouton_pref"
        android:contentDescription="@string/hint_preferences_desc"
        android:transitionName="MyTransitionPrefs"
        />
...
<ImageView
    android:id="@+id/iv_header"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/fakeHeader"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    android:src="@drawable/header"
    android:transitionName="MyTransition" />
4

0 回答 0