在一个片段中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,这里是来源。