ImageView规模上的Android共享元素转换是错误的

时间:2016-04-19 23:51:42

标签: android material-design android-transitions

我尝试了很多不同的变体,无法让返回过渡正常工作。

当我退出活动B时,图像会转换回活动A,但它会缩放直到它消失,然后消失后显示应该显示的位置。

我在该组中尝试了以下和其他的不同变体

活动A. 来自recyclerview中的点击监听器。

Intent intent = new Intent(getActivity(), ApplyActivity.class);
            ActivityOptionsCompat transitionActivityOptions;
            transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), imageView, getString(R.string.transition_image_details));
            intent.putExtra(ApplyActivity.EXTRA_NAME, selected_launcher);
            intent.putExtra(ApplyActivity.EXTRA_INSTALLED, mLaunchers.get(position).getInstalled());

            getActivity().startActivity(intent, transitionActivityOptions.toBundle());

活动A布局

<ImageView
android:id="@+id/launcher_icon"
android:transitionName="@string/transition_image_details"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_centerHorizontal="true"
android:padding="@dimen/small_padding"
android:layout_alignParentTop="true" />

活动B

 Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.change_image_transform);

        getWindow().setSharedElementReturnTransition(transition);
        getWindow().setSharedElementEnterTransition(transition);
        getWindow().setSharedElementExitTransition(transition);

我尝试过以下true / false getWindow()。setSharedElementsUseOverlay(true);

活动B布局(在AppBarLayout / CollapsingToolbarLayout中)

<ImageView
   android:id="@+id/backdrop"
   android:transitionName="@string/transition_image_details"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="80dp"
   android:paddingTop="30dp"
   app:layout_collapseMode="parallax"
   app:layout_collapseParallaxMultiplier="0.7" />

change_image_transform.xml

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

我已尝试在values-v21 / styles.xml中设置转换,但没有运气。

我甚至尝试从recyclerview设置转换名称的位置也没有运气。

以下是该问题的视频。我放慢了过渡,所以可以看得更好

https://www.dropbox.com/s/gzli11ae3ebz95f/2016_04_19_20_33_29.mp4?dl=0

2 个答案:

答案 0 :(得分:2)

确保两张图片共享相同的scaleType

有关详情,请参阅此帖子: Android Glide library not working with shared element transitions

答案 1 :(得分:-1)

你可以尝试在活动B中删除这些转换代码。我这样做了,并且效果很好。