将图片从 recyclerview 放大到新图片 activity
Grow picture from recyclerview into new activity
我有一个 activity,里面有一个 recyclerview
,里面装满了图片。如果 recyclerview
上的某个项目被按下,我需要该图像增长到屏幕的全尺寸,然后更改工具栏并在一个新的 activity
中,其屏幕是被点击的全尺寸图像物品。然后我还需要一个新的工具栏。
关于如何解决这个问题有什么想法吗?
试试这个。
我想这会对你有所帮助。
检查共享转换,这可能是您想要的。
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()
...
我有一个 activity,里面有一个 recyclerview
,里面装满了图片。如果 recyclerview
上的某个项目被按下,我需要该图像增长到屏幕的全尺寸,然后更改工具栏并在一个新的 activity
中,其屏幕是被点击的全尺寸图像物品。然后我还需要一个新的工具栏。
关于如何解决这个问题有什么想法吗?
试试这个。
我想这会对你有所帮助。
检查共享转换,这可能是您想要的。
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()
...