【发布时间】:2018-11-06 20:25:09
【问题描述】:
在AppCompatActivity 和RecyclerView 在片段中(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