共享元素转换在Android中不起作用

问题描述 投票:0回答:2

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

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

在卡片视图中设置图像中的过渡名称

<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());

但是当我单击卡片视图以查看第二个活动时,动画将无法运行。知道为什么吗?

android android-intent android-animation android-cardview
2个回答
0
投票
您如何在活动/片段中绑定

pet_image?

您可以尝试这种方式:

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


0
投票
如果共享元素嵌套在另一个视图中,则需要确保父视图也已过渡。enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.