【问题标题】:How to make content transition with fragments?如何使用片段进行内容过渡?
【发布时间】:2017-03-28 10:34:06
【问题描述】:

在从片段 A 到 B 的事务中,我希望片段 B 的某些特定视图从 X 点移动到 Y 点。这应该可以使用内容转换来实现:Frament.setEnterTransition(Object transition)。我不明白我应该将什么传递给 setEnterTransition(Object transition) 以便告诉 B 的特定视图以特定方式进行动画处理。

在网上可以找到很多,但主要是指共享元素转换,我找不到任何关于内容转换的帮助。

【问题讨论】:

    标签: android android-fragments android-transitions


    【解决方案1】:

    假设您将其作为片段的布局:

    <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 会留在原来的位置。

    Source code.

    【讨论】:

    • 感谢您的帮助。我有一个后续问题:) 我希望我的观点沿着自定义路径行进。我有指定 PathMotion 的 TransitionSet 对象,我如何指定屏幕上的点来开始动画。 TransitionSet 似乎没有设置器。
    • 您必须创建自己的过渡并覆盖captureStartValues()。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多