共享元素转换在Android中无效

时间:2017-05-02 16:23:05

标签: android android-intent android-animation android-cardview

我已经设置了我的应用样式

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

在cardview中设置图像中的转换名称

<ImageView
        android:id="@+id/pet_image"
        android:layout_width="match_parent"
        android:layout_height="210dp"
        android:layout_alignParentTop="true"
        android:scaleType="centerCrop"
        android:src="@drawable/placeholder"
        android:visibility="gone"
        android:transitionName="@string/transition_name"/>

在第二个活动

中的图像中设置转换名称
<ImageView
    android:id="@+id/imgDisplay"
    android:layout_width="match_parent"
    android:layout_height="566dp"
    android:scaleType="fitCenter"
    android:transitionName="@string/transition_name"
    />

并将卡的onClick侦听器设置为此以进行共享元素转换

//animation
        String transitionName = v.getResources().getString(R.string.transition_name);
        View viewStart = v.findViewById(R.id.entire_card);
        ActivityOptionsCompat options =
                ActivityOptionsCompat.makeSceneTransitionAnimation((Activity)mContext, viewStart, transitionName);

        v.getContext().startActivity(intent, options.toBundle());

但是当我点击cardview查看第二个活动时,动画不会运行。知道为什么吗?

2 个答案:

答案 0 :(得分:0)

如何在activity / fragment中绑定 pet_image

您可以尝试这种方式:

ActivityOptionsCompat options =
                ActivityOptionsCompat.makeSceneTransitionAnimation((Activity)mContext, 
                                      (View) pet_image, "transitionName");

答案 1 :(得分:0)

如果共享元素嵌套在另一个视图中,则需要确保父视图也已过渡。 enter image description here