Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要共享元素片段转换方面的帮助吗_Android_Android 5.0 Lollipop_Shared Element Transition_Fragment Transitions - Fatal编程技术网

Android 需要共享元素片段转换方面的帮助吗

Android 需要共享元素片段转换方面的帮助吗,android,android-5.0-lollipop,shared-element-transition,fragment-transitions,Android,Android 5.0 Lollipop,Shared Element Transition,Fragment Transitions,我需要关于片段到片段转换的帮助。我不清楚如何正确地完成它,因为我几乎找不到文档 我有一个带有电影海报的GridView。当单击一张海报时,它将移动到下一个片段。海报是共享元素,它将调整大小(变大)并覆盖屏幕。其他元素将随着内容转换而褪色。这是正确的 我无法获取“重新输入”转换。按“上一步”按钮时,网格视图中的第一个元素将始终首先出现(它不跟随内容转换(淡入)),然后其他元素淡入。共享元素不会调整大小(变小)并连接其他元素。它将与其他元素一起淡入,因此遵循内容转换样式。 这是我的密码: NowSh

我需要关于片段到片段转换的帮助。我不清楚如何正确地完成它,因为我几乎找不到文档

我有一个带有电影海报的GridView。当单击一张海报时,它将移动到下一个片段。海报是共享元素,它将调整大小(变大)并覆盖屏幕。其他元素将随着内容转换而褪色。这是正确的

我无法获取“重新输入”转换。按“上一步”按钮时,网格视图中的第一个元素将始终首先出现(它不跟随内容转换(淡入)),然后其他元素淡入。共享元素不会调整大小(变小)并连接其他元素。它将与其他元素一起淡入,因此遵循内容转换样式。 这是我的密码:

NowShowingFragment.java包含带有图像的gridview

 @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>