如何使用片段(fragment)实现内容过渡?

3
从片段A到B的事务发生时,我希望片段B的某个特定视图从点X移动到点Y。可以使用内容转换来实现这一点:Frament.setEnterTransition(Object transition)。我不明白我应该传递什么参数到setEnterTransition(Object transition)以便告知B的特定视图以特定方式进行动画。

网上可以找到很多相关信息,但大多数都涉及共享元素转换,在内容转换方面我找不到任何帮助。

2个回答

2
假设您将此作为片段布局:
```html

假设您将此作为片段布局:

```
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:background="@android:color/white"
             android:layout_height="match_parent">

    <View
            android:id="@+id/shared_view"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_gravity="center_vertical|right"
            android:background="#812432"/>

    <View
            android:id="@+id/non_shared_view"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginTop="80dp"
            android:layout_gravity="center_vertical|right"
            android:background="#fff53f"/>

</FrameLayout>

您需要从第一个片段执行此操作,该片段启动打开第二个片段:

Slide slide = new Slide(Gravity.LEFT);
TransitionSet set = new TransitionSet();
set.addTransition(slide);
set.addTarget(R.id.shared_view);
Fragment secondFragment = new SecondFragment();
secondFragment.setEnterTransition(set);
getActivity().getSupportFragmentManager().beginTransaction()
             .add(R.id.contentPanel, secondFragment)
             .addToBackStack(null)
             .commit();

你会发现,shared_view从左侧滑动到初始位置,而non_shared_view则会保持不变。 进入图像描述 源代码

谢谢你的帮助。我有一个后续问题 :) 我想让我的视图沿着自定义路径移动。我有一个指定了PathMotion的TransitionSet对象,如何指定屏幕上开始动画的点。TransitionSet似乎没有这样的setter。 - Booyaches
1
你需要创建自己的转换并覆盖captureStartValues() - azizbekian


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接