Android 需要共享元素片段转换方面的帮助吗
我需要关于片段到片段转换的帮助。我不清楚如何正确地完成它,因为我几乎找不到文档 我有一个带有电影海报的GridView。当单击一张海报时,它将移动到下一个片段。海报是共享元素,它将调整大小(变大)并覆盖屏幕。其他元素将随着内容转换而褪色。这是正确的 我无法获取“重新输入”转换。按“上一步”按钮时,网格视图中的第一个元素将始终首先出现(它不跟随内容转换(淡入)),然后其他元素淡入。共享元素不会调整大小(变小)并连接其他元素。它将与其他元素一起淡入,因此遵循内容转换样式。 这是我的密码: NowShowingFragment.java包含带有图像的gridviewAndroid 需要共享元素片段转换方面的帮助吗,android,android-5.0-lollipop,shared-element-transition,fragment-transitions,Android,Android 5.0 Lollipop,Shared Element Transition,Fragment Transitions,我需要关于片段到片段转换的帮助。我不清楚如何正确地完成它,因为我几乎找不到文档 我有一个带有电影海报的GridView。当单击一张海报时,它将移动到下一个片段。海报是共享元素,它将调整大小(变大)并覆盖屏幕。其他元素将随着内容转换而褪色。这是正确的 我无法获取“重新输入”转换。按“上一步”按钮时,网格视图中的第一个元素将始终首先出现(它不跟随内容转换(淡入)),然后其他元素淡入。共享元素不会调整大小(变小)并连接其他元素。它将与其他元素一起淡入,因此遵循内容转换样式。 这是我的密码: NowSh
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
Transition shared = TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.fade);
shared.setDuration(2000);
setExitTransition(shared);
}
在我的OnCreateView中,我使用毕加索从web加载图像。因此,我首先从Imageview中提取位图并将其传递给Activity,Activity将传递给下一个要显示的片段(不知道是否应该这样做)
在NowShowingDetail中,这是新片段,它将取代旧片段。它将全屏显示共享元素
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.testlayout, container, false);
ImageView imageView = (ImageView) rootView.findViewById(R.id.gridImage);
Bundle arguments = getArguments();
if (arguments != null) {
Bitmap bitmap = arguments.getParcelable("Bitmap");
imageView.setImageBitmap(bitmap);
imageView.setTransitionName(arguments.getString("TransitionName"));
}
return rootView;
}
更改\u image\u transorm.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform
android:duration="2000"></changeImageTransform>
<changeBounds
android:duration="2000"></changeBounds>
<changeTransform
android:duration="2000"></changeTransform>
先谢谢你
编辑:使用相同的代码,我改为“活动转换”方法。这工作完美无瑕。我认为我称之为“片段转换”的方式可能是错误的。您的观点值得赞赏。我注意到,对于片段,没有共享元素退出和重新进入转换 引用@George Mount post: 所有这些转换在片段转换中都是相同的,只是没有共享元素退出和共享元素返回转换。片段转换使用FragmentTransaction工作。删除片段,然后添加片段,然后激活转换。如果删除一个片段,就很难像在活动转换中那样对其进行操作。相反,您必须在启动FragmentTransaction之前进行操作 从 所以我认为片段转换只是一种方式,如果是这样的话,那么行为就是预期的 在其他人给出更好的解释之前,将保持此为可接受状态
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.testlayout, container, false);
ImageView imageView = (ImageView) rootView.findViewById(R.id.gridImage);
Bundle arguments = getArguments();
if (arguments != null) {
Bitmap bitmap = arguments.getParcelable("Bitmap");
imageView.setImageBitmap(bitmap);
imageView.setTransitionName(arguments.getString("TransitionName"));
}
return rootView;
}
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform
android:duration="2000"></changeImageTransform>
<changeBounds
android:duration="2000"></changeBounds>
<changeTransform
android:duration="2000"></changeTransform>