将图片从 recyclerview 放大到新图片 activity

Grow picture from recyclerview into new activity

我有一个 activity,里面有一个 recyclerview,里面装满了图片。如果 recyclerview 上的某个项目被按下,我需要该图像增长到屏幕的全尺寸,然后更改工具栏并在一个新的 activity 中,其屏幕是被点击的全尺寸图像物品。然后我还需要一个新的工具栏。

关于如何解决这个问题有什么想法吗?

试试这个。

我想这会对你有所帮助。

link

检查共享转换,这可能是您想要的。

https://guides.codepath.com/android/Shared-Element-Activity-Transition

您可以使用片段过渡

public class DetailsTransition extends TransitionSet {
    public DetailsTransition() {
        setOrdering(ORDERING_TOGETHER);
        addTransition(new ChangeBounds()).
                addTransition(new ChangeTransform()).
                addTransition(new ChangeImageTransform()));
    }
}

https://medium.com/@bherbst/fragment-transitions-with-shared-elements-7c7d71d31cbb#.9t2bqq23m

https://www.raywenderlich.com/126528/android-recyclerview-tutorial

我找到了这个问题的解决方案。顺便说一句,它很简单 :-)

android:transitionName="ouranimation" 属性添加到要设置动画的视图。 例如:

在activity_main.xml中:-

<android.support.v7.widget.CardView
  ...>
      <ImageView
          android:id="@+id/ivProfile"
          android:transitionName="profile"
          android:scaleType="centerCrop"
          android:layout_width="match_parent"
          android:layout_height="160dp" />
      ...
</android.support.v7.widget.CardView>

在detail_activity.xml中:-

<LinearLayout
  ...>
      <ImageView
          android:id="@+id/ivProfile"
          android:transitionName="profile"
          android:scaleType="centerCrop"
          android:layout_width="match_parent"
          android:layout_height="380dp" />
      ...
</LinearLayout>

现在只需从源中指定一组共享元素和视图,即可启动目标 activity。注意:- 此转换仅适用于大于 21 Lollipop 的 api 级别。

    Intent intent = new Intent(this, MyDetailsActivity.class);
   // pass the data through intent if you need...
    intent.putExtra("key", detail);
    ActivityOptionsCompat options = ActivityOptionsCompat.
        makeSceneTransitionAnimation((Activity) context, (View)ivProfile, "ouranimation");
    startActivity(intent, options.toBundle());

要将此动画反转回 MainActivity,只需调用此 Activity.supportFinishAfterTransition() 方法而不是 Activity.finish()...