0
  • 最佳答案

    不你跟着视频走就算了,那你得有根据呀。


    这是官方文档


    https://developer.android.com/training/basics/fragments/animate


    这个是原生的切换。也就是手动replace的。

    1153952789488054272  评论     打赏       拉大锯
    • Kennen  回复 @拉大锯
      嗯…我昨天下午试的就是官方文档里的这个,但是好像也没啥区别…基本都差不多,我重新试了好几次不知道为什么不成功…我感觉我这些设置好像没啥大问题啊,不知道踩了那个坑
      Kennen 2020-10-31 15:05   回复 1219951079001690112
    • 拉大锯  回复 @Kennen
      不要感觉、好像,要有根有据呢。先看跟关官网的demo做一次,然后再去理解,接着才是去使用到你自己的项目里。这个方式以后可以转在直接用在你的项目上,不要在学习阶段就直接使用。
      拉大锯 2020-10-31 15:52   回复 1153952789488054272
    • Kennen  回复 @拉大锯
      好吧,我先做个demo吧,确实还没理解就开始往上面搬运,主要看好像没几行代码的感觉就自以为是地直接草草抄了几句代码以为就能跑…还是扎实一点吧!谢谢康师傅指点!好好学习!
      Kennen 2020-11-01 11:13   回复 1219951079001690112
  • 找到坑了,希望可以帮助后面踩坑的同学

    这个共享元素很好用…不论你的两个fragment中共享的元素放在哪里,不论这两个元素的类型是否一样,不论整个页面布局多么复杂都没有关系,唯一有关系的就是他们的transitionName要一致,还有我踩的这个坑:

    我的MainActivity管理了三个子Fragment,页面布局的最底下有一个BottomNavigationView,这个底部导航栏不论怎么样都是在这三个子Fragment的顶层的,这是没问题的,因为就是要这样才方便页面切换,但是搜索页面就不同了,当我打开搜索页面的时候这个底部导航栏就不能被看到,否则会很奇怪,因此我把SearchFragment放在了底部导航栏的父容器下,这样就可以让SearchFragment将底部导航栏遮盖住,这个SearchFragment就没有放在和三个子Fragment同一个容器下,就是这里导致的问题。

    也就是说,在MainActivity的页面replace时要把SearchFragment放在和他有共享元素的Fragment同一个容器下,即下面的 R.id.navHostFragment


    mHome.setOnSearchBarClickedListener {
        supportFragmentManager.beginTransaction()
                .replace(R.id.navHostFragment, mSearch)
                .addSharedElement(mHome.home_search_bar,         getString(R.string.shareSearchBar))
                .addToBackStack(null)
                .commit()
    }
    


    希望能帮到和我有一样问题的同学

    1219951079001690112  评论     打赏       Kennen
    • 而且还有demo


      你可以下载下来跑一下,对着源码学习一下。

      1153952789488054272  评论     打赏       拉大锯
      相关问题
      2023-11-21 15:11 13 2
      陈钱罐16 · 领券联盟
      2023-11-11 18:09 23 8
      哈哈android · AOSP
      2023-11-10 15:52 13 12
      2023-11-10 00:26 22 10
      zhanghengze · Android
      2023-10-26 21:52 22 8