ActivityOptions.makeSceneTransitionAnimation 无法在具有多个视图的 kotlin 中工作
ActivityOptions.makeSceneTransitionAnimation not working in kotlin with multiple views
这是我的 activity 过渡动画
的 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())
我得到一个 error/warning 喜欢
none of the following function can be called with the arguments
supplied
于 ActivityOptions.makeSceneTransitionAnimation
最后我通过改变
解决了这个问题
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")
导入这个:
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)
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
导入这个
import androidx.core.util.Pair
即使我使用的是 Kotlin,我也必须为代码指定冗余的 Pair 类型 运行!所以只需添加这些:
<View, String>
决赛:
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())
我遇到了同样的问题,就我而言,我需要更正导入。除了导入之外,这是对我有用的代码。
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())
这是我的 activity 过渡动画
的 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())
我得到一个 error/warning 喜欢
none of the following function can be called with the arguments supplied
于 ActivityOptions.makeSceneTransitionAnimation
最后我通过改变
解决了这个问题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")
导入这个:
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)
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
导入这个
import androidx.core.util.Pair
即使我使用的是 Kotlin,我也必须为代码指定冗余的 Pair 类型 运行!所以只需添加这些:
<View, String>
决赛:
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())
我遇到了同样的问题,就我而言,我需要更正导入。除了导入之外,这是对我有用的代码。
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())