【发布时间】:2019-05-14 20:26:00
【问题描述】:
我有一个 TextView,我想为它的 textSize 设置动画。这是使用 ObjectAnimator 为 textSize 设置动画的代码。
val newSize = resources.getDimension(R.dimen.selected_text_size)
val animator = ObjectAnimator.ofFloat(tv_text, "textSize", newSize)
animator.duration = 200
animator.start()
问题在于resources.getDimension(R.dimen.selected_text_size)返回一个以像素为单位的文本大小值,并且似乎 ObjectAnimator 默认使用 sp 值,这使得最终的动画大小比预期大得多。
如果我改变了
val newSize = resources.getDimension(R.dimen.selected_text_size)
到
val newSize = resources.getDimension(R.dimen.selected_text_size) / (resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
然后,它将给出正确的最终动画尺寸,因为第二个将获得 sp 值而不是像素值。
如果我在没有动画的情况下更改 textSize,我可以像这样指定 TypedValue:
tv_text.setTextSize(TypedValue.COMPLEX_UNIT_PX, resources.getDimension(R.dimen.selected_text_size))
那么,有没有办法在使用 ObjectAnimator 为 textSize 设置动画时指定 TypedValue?
【问题讨论】:
标签: android textview objectanimator