相关疑难解决方法(0)

如何使用Fragments启动共享元素转换?

我正在尝试实现具有"共享元素"的片段之间的转换,如新材料设计规范中所述.我能找到的唯一方法是ActivityOptionsCompat.makeSceneTransitionAnimation,我认为它仅适用于Activity.我一直在寻找相同的功能,但有/片段.

android fragment material-design

58
推荐指数
3
解决办法
4万
查看次数

共享元素转换在父片段和子片段(嵌套片段)之间不起作用

在主要活动中,我有BottomNavigationView3 个不同的父片段。父片段具有recyclerview并在 recyclerview 的项目单击时,我正在启动子片段以获取有关该项目的更多详细信息。我试图Shared Element Transition在我的两个片段(父和子)之间实现,但它没有发生。

启动子片段没有问题,我也检查了转换名称,它与我分配给适配器中的项目的子片段相同。我正在使用Random类将转换名称分配给项目,因为在单父片段中我有很多 recyclerviews。这是我的代码:

适配器

    final String transition;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        transition = "transition" + new Random().nextInt(9999999);
        viewHolder.image.setTransitionName(transition);
    }
    viewHolder.container.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mCallback.itemClicked(i, book, viewHolder.image, transition);
        }
    });
Run Code Online (Sandbox Code Playgroud)

父片段

@Override
public void itemClicked(int pos, Book book, View view, String transition) {
    MainActivity activity = (MainActivity) getActivity();
    ChildFragment myFragment = new ChildFragment();
    Bundle bundle = new Bundle();
    bundle.putString(IntentExtraKeys.TRANSITION_NAME, transition);
    myFragment.setArguments(bundle);
    activity.showFragmentWithTransition(this, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments child-fragment

7
推荐指数
1
解决办法
1482
查看次数

Fragment Shared Element Transitions FragmentManager with add() 不起作用

当我尝试使用Medium GitHub 上这篇文章中的类似代码对片段使用转换时。当我在片段管理器上使用 add method() 时它不起作用,但它可以与 replace() 一起使用。

FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .addSharedElement(mSharedElement, "transName")
            .add(D.id.content_frame, fragment, FRAG_NAME)
            .addToBackStack(null)
            .commit();
Run Code Online (Sandbox Code Playgroud)

我需要使用 add() 方法来保留下面的片段,因为用户将在包含项目列表的第一个片段和显示有关该项目的详细信息的第二个片段之间来回导航。我不想继续用列表加载片段。

在片段管理器上使用 add() 时,有没有办法让共享元素转换工作,而不是 replace()。

android android-fragments fragmentmanager android-transitions shared-element-transition

5
推荐指数
0
解决办法
1165
查看次数