动画片段中的视图

Animating a view in a fragment

我正在尝试为片段中的图像视图设置动画。我尝试创建一个 XML 动画并在 Kotlin 中执行它,但每次我 运行 应用程序都会崩溃。

class WelcomeFragment : Fragment() {

private lateinit var binding: FragmentWelcomeBinding
private lateinit var zoomAnimation: Animation
private lateinit var turnedOffStar: ImageView

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                         savedInstanceState: Bundle?): View? {
    binding = DataBindingUtil.inflate(
        inflater,
        R.layout.fragment_welcome,
        container,
        false
    )
    binding.turnedOffStarButton.setOnClickListener { v: View ->

    }
    scaler()
    zoomAnimation()
    return binding.root
}


private fun zoomAnimation() {
    zoomAnimation = AnimationUtils.loadAnimation(activity?.baseContext,R.anim.zoom_undonestar)
    turnedOffStar.startAnimation(zoomAnimation)
}

private fun scaler() {
    val scaleX = PropertyValuesHolder.ofFloat(View.SCALE_X, 0.3F)
    val scaleY = PropertyValuesHolder.ofFloat(View.SCALE_Y, 0.3F)
    val animator: ObjectAnimator = ObjectAnimator.ofPropertyValuesHolder(turnedOffStar, scaleX, scaleY)
    animator.repeatCount = INFINITE
    animator.repeatMode = ObjectAnimator.REVERSE
    animator.start()
}

}

首先我尝试使用 fun zoomAnimation,然后是 fun scaler。这与我在片段内制作动画有关吗?因为我已经在 activity 中制作了一个动画,而且效果很好。

如果您将堆栈跟踪(日志)与您的代码一起添加,将会很有帮助。

您的 ImageView turnedOffStar 未在任何地方初始化。由于您已经在使用数据绑定,因此您应该使用它来引用您的视图。所以,你应该像这样引用你的图像视图:binding.turnedOffStar.startAnimation()