Увеличение через ScaleAnimation не совместить с перемещением в центр экрана

Есть CardView, расположенный НЕ по центру экрана. Нужно его увеличить в три раза по вертикали и переместить в центр.

Увеличение реализовал через ScaleAnimation:

val anim: Animation = ScaleAnimation(
    1f, 1f,  // Start and end values for the X axis scaling
    1f, 3f,  // Start and end values for the Y axis scaling
    Animation.RELATIVE_TO_SELF, 0f,  // Pivot point of X scaling
    Animation.RELATIVE_TO_SELF, 0f, // Pivot point of Y scaling
)
anim.fillAfter = true // Needed to keep the result of the animation
anim.duration = 1000
view.startAnimation(anim)

Перемещение в центр реализовал так:

val windowYcentre = getWindowSize().y / 2
val viewHeight = view.height / 2
val y = windowYcentre - viewHeight.toFloat()
view.animate().y((y))

Функция getWindowSize:

fun getWindowSize(): Point {
    val display = windowManager.defaultDisplay
    val size = Point()
    display.getSize(size)
    return size
}

По отдельности оба компонента работают правильно.

Но вот при попытке их совмещения просто постановкой подряд CardView неконтролируемо улетает (чаще всего) за границы экрана вовсе. Закономерности в зависимости от положения на экране (ведь положения будут разными) выявить я так и не смог. Как можно добиться нормального перемещения в центр при увеличении?


Ответы (0 шт):