ImageView 尺度上的 Android 共享元素转换是错误的

标签 android material-design android-transitions

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

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

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

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

Activity布局

<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" />

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

Activity 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

最佳答案

确保两个图像共享相同的scaleType

有关更多信息,请参阅此帖子: Android Glide library not working with shared element transitions

关于ImageView 尺度上的 Android 共享元素转换是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36731429/

相关文章:

Wpf Material Design 日期时间选择器

java - 将按钮的外观更改为圆形按钮

Angular2 + Material : mat-toolbar casts no shadow over mat-sidenav-container despite mat-elevation-z*

android - CookieSyncManager 现在已弃用,我可以使用什么来代替?

android - 自定义菜单,android,透明 Activity ?

android - 如何指定 TransitionManager.beginDelayedTransition 仅影响直接 subview

android - 是否有适用于 Android 的 ImageView 转换库?

android - overridePendingTransition 持续时间被忽略

android - 如何在 Android Espresso 测试中测试 setResult()?

Android Week View (alamkanak - library) 三重事件名称