使用 ViewPager 从 Activity 到 Fragment 的共享元素转换
Shared element transition from Activity to Fragment using ViewPager
我在 Activity
中使用此代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.setTransitionName("pic");
ActivityOptionsCompat a=ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context,view,view.getTransitionName());
Intent i3=new Intent(context,MovieInfo.class);
i3.putExtra("id",view.getId());
startActivity(i3,a.toBundle());
}
在我的片段中 Class 我正在使用这个
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getActivity().getWindow().setSharedElementExitTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.shared_element_transition));
}
}
我也尝试在主要 activity 中使用它,但无法实现共享元素转换,但是当我回到我的 activity 转换时 工作正常 表示其余代码没问题!
如有帮助将不胜感激!
首先您需要在 styles.xml
的 App Theme 中启用 windowContentTrasition
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowContentTransitions">true</item>
.
.
</style>
接下来将相同的 transitionName 属性 添加到两个布局中的两个共享元素
android:transitionName="transition_name"
在您的 activity 中创建一个这样的意图
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(this, view, "transition_name");
Intent intent = new Intent(this, MovieInfo.class);
startActivity(intent, options.toBundle());
我在 Activity
中使用此代码if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.setTransitionName("pic");
ActivityOptionsCompat a=ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context,view,view.getTransitionName());
Intent i3=new Intent(context,MovieInfo.class);
i3.putExtra("id",view.getId());
startActivity(i3,a.toBundle());
}
在我的片段中 Class 我正在使用这个
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getActivity().getWindow().setSharedElementExitTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.shared_element_transition));
}
}
我也尝试在主要 activity 中使用它,但无法实现共享元素转换,但是当我回到我的 activity 转换时 工作正常 表示其余代码没问题!
如有帮助将不胜感激!
首先您需要在 styles.xml
的 App Theme 中启用 windowContentTrasition<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:windowContentTransitions">true</item>
.
.
</style>
接下来将相同的 transitionName 属性 添加到两个布局中的两个共享元素
android:transitionName="transition_name"
在您的 activity 中创建一个这样的意图
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(this, view, "transition_name");
Intent intent = new Intent(this, MovieInfo.class);
startActivity(intent, options.toBundle());