У меня есть TextView , и я хочу анимировать его textSize . Это код для анимации textSize с использованием ObjectAnimator .
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))
Итак, есть ли способ указать TypedValue при анимации textSize с использованием ObjectAnimator ?