动画片段中的视图
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()
我正在尝试为片段中的图像视图设置动画。我尝试创建一个 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()