Определение оси масштабирования ScaleAnimation

У меня есть представление, что я масштабируюсь по списку, который имитирует масштабирование списка элементов по вертикали в полноэкранном режиме.

Вот пример проекта github для воспроизведения с кодом анимации здесь

введите описание изображения здесь

код выглядит следующим образом:

<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <View android:id="@+id/growView" android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/fiftyBlack" /> </FrameLayout> 

а также

 view.setOnClickListener { val listItemHeight = it.measuredHeight val toolBarHeight = (it.parent as RecyclerView).y val scalingView = it.rootView.findViewById<View>(R.id.growView) val screenHeight = (scalingView.parent as FrameLayout).measuredHeight // Position the view exactly over the list item scalingView.y = it.y + toolBarHeight scalingView.layoutParams.height = listItemHeight scalingView.layoutParams = scalingView.layoutParams /* pivots[0] scales example animation for the first item of the list for xxhdpi: 1080p device for the rest of the visible items the pivots are: 1.954f, 3.131f .... +1.177 (no scroll) */ val pivots = arrayListOf(0.777f) val itemScale = screenHeight.toFloat()/listItemHeight val scaleAnime = ScaleAnimation(1f, 1f, 1f, itemScale, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, pivots[0]) scaleAnime.setDuration(400); scaleAnime.setFillAfter(true); scalingView.startAnimation(scaleAnime); 

Как вы можете видеть, проблема заключается в определении точки поворота y для каждого элемента:

 val scaleAnime = ScaleAnimation( /.....* Dynamic vertical pivot */) 

Я борюсь за несколько дней, чтобы определить точку опоры, но не могу понять, от чего это зависит.

Есть идеи, что это может быть?

    Давайте будем гением компьютера.