【问题标题】:fragment to fragment animation with shared element don't work as expected具有共享元素的片段到片段动画无法按预期工作
【发布时间】:2018-11-06 20:25:09
【问题描述】:

AppCompatActivityRecyclerView 在片段中(myFragment1)、viewholders 等等,所以如果我点击一个项目,那么myFragment2 将显示并显示该项目的详细信息.在这个阶段,我想在两个具有共享元素的片段之间创建一个动画。
重现行为的步骤:

import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
[...]
public class AppActivity extends AppCompatActivity

myFragment1.setSharedElementReturnTransition(new MyNewTransition());
myFragment1.setSharedElementEnterTransition(new MyNewTransition());
[...]
a) getSupportFragmentManager().beginTransaction()
                    .addSharedElement(myImage, "mytransition")
                    .replace(R.id.recycler_view_container, myFragment2)
                    .commit();

b) getSupportFragmentManager().beginTransaction()
                    .addSharedElement(myImage, "mytransition")
                    .add(R.id.recycler_view_container, myFragment2)
                    .hide(myFragment1) 
                     commit();

在 (a) 代码中,图像转换是正确的,并且动画在共享元素之间完美地发生,但我不需要这个。 在 (b) 代码中,唯一的区别是 myFragment1 被隐藏并添加了 myFragment2,在这种情况下,进入转换和返回转换都被破坏并且没有动画发生。
我需要 (b) 代码,因为“替换”片段会破坏 myFragment1 并且重建它是一个繁重的过程。 我认为这是 androidx 库的错误

编辑: 我已经根据 Bryan Herbst 的演示构建了一个示例:
FragmentTransitionSample 并针对 androidx 进行了重新调整,here 是来源。

【问题讨论】:

    标签: androidx fragment-transitions


    【解决方案1】:

    尝试添加setReorderingAllowed(true)

    例如:

    getSupportFragmentManager().beginTransaction() 
                    .setReorderingAllowed(true)
                    .addSharedElement(myImage, "mytransition") 
                    .add(R.id.recycler_view_container, myFragment2) 
                    .hide(myFragment1)  
                     commit(); 
    

    【讨论】:

    • 没有丹尼尔。有闪烁,按返回键返回,带有小猫的片段消失了。一切都搞砸了。
    • 我在迁移到 androidx 后遇到了同样的错误,并且 setReorderingAllowed(true) 已修复此问题。
    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 2015-09-03
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多