【问题标题】:ActivityOptions.makeSceneTransitionAnimation not working in kotlin with multiple viewsActivityOptions.makeSceneTransitionAnimation 在具有多个视图的 kotlin 中不起作用
【发布时间】:2018-08-04 09:45:37
【问题描述】:

这是我的活动过渡动画的 Kotlin 代码

    val p1 = Pair.create(imageViewhospitals, "hospitals")
    val p2 = Pair.create(textViewhospitals, "title")

    val options = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                        ActivityOptions.makeSceneTransitionAnimation(this, p1, p2)
                    } else {
                        TODO("VERSION.SDK_INT < LOLLIPOP")
                    }
startActivity(Intent(this,SplashActivity::class.java),options.toBundle())

我收到类似

的错误/警告

以下函数都不能用参数调用 提供

ActivityOptions.makeSceneTransitionAnimation

【问题讨论】:

    标签: android animation view kotlin transition


    【解决方案1】:

    我遇到了同样的问题,就我而言,我需要纠正导入。除了导入之外,这是对我有用的代码。

    import androidx.core.util.Pair
    import androidx.core.app.ActivityOptionsCompat
    import androidx.core.app.ActivityCompat
    
    
    val intent = Intent(activity, SecondActivity::class.java)
    val pair1 = Pair.create<View, String>(view1, "string1")
    val pair2 = Pair.create<View, String>(view2, "string2")
    val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, pair1, pair2)
    ActivityCompat.startActivity(activity, intent, options.toBundle())
    

    【讨论】:

      【解决方案2】:

      即使我使用的是 Kotlin,我也必须指定冗余的 Pair 类型才能运行代码!所以只需添加这些: &lt;View, String&gt;

      最终:

          val options = ActivityOptions.makeSceneTransitionAnimation(this,
              Pair.create<View, String>(viewHolder.imageView, getString(R.string.shared_animation_imageview)),
              Pair.create<View, String>(viewHolder.tvTitle, getString(R.string.shared_animation_title)))
      
          startActivity(intent, options.toBundle())
      

      【讨论】:

        【解决方案3】:

        导入这个

        import androidx.core.util.Pair
        

        【讨论】:

          【解决方案4】:
          val imgAnim = Pair.create<View?, String?>(galleryImg, "targetImage")
          val textAnim = Pair.create<View?, String?>(textTitle, "targettext")
          val options = ActivityOptionsCompat.makeSceneTransitionAnimation( activity, imgAnim, textAnim)
          

          这适用于我使用 ActivityOptionsCompat 而不是使用 ActivityOptions

          【讨论】:

            【解决方案5】:

            导入这个:

            import android.util.Pair as UtilPair
            

            然后做

            val pair1 = UtilPair.create<View,String>(yourView,"myTransition")
            val pair2 = UtilPair.create<View,String>(view.package_name,"actNameTransition")
            val options = ActivityOptions.makeSceneTransitionAnimation(this,
                            pair1,
                            pair2)
            

            【讨论】:

              【解决方案6】:

              我终于通过改变解决了这个问题

              val p1 = Pair.create(imageViewhospitals, "hospitals")
              val p2 = Pair.create(textViewhospitals, "title")
              

              val p1 = Pair.create<View, String>(imageViewhospitals, "hospitals")
              val p2 = Pair.create<View, String>(textViewhospitals, "title")
              

              【讨论】:

              • 你使用了什么导入?
              • @seekingStillness androidx.core.util.Pair.create
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-20
              • 2020-03-22
              相关资源
              最近更新 更多