Есть ли способ параметризации анимации? - PullRequest
1 голос
/ 02 апреля 2019

Я создал простую анимацию для многократного перемещения вида вверх и вниз:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromYDelta="0"
        android:toYDelta="???"
        android:duration="1000"
        android:repeatCount="1000000"
        android:repeatMode="reverse"/>
</set>

Я использую ресурс анимации для этого, как это предлагается в документах. Тем не менее, во время компиляции я не знаю, как далеко должен идти вид (toYDelta), поскольку это будет зависеть от экрана устройства.

Есть ли способ параметризации, который каким-то образом, а если нет, что бы обойти это?

Ответы [ 3 ]

1 голос
/ 03 апреля 2019

Вы можете выразить эти значения в процентах, например. : «20% р» - это 20% от родителя

Подробнее https://developer.android.com/guide/topics/resources/animation-resource

1 голос
/ 03 апреля 2019

Документация гласит здесь :

Вертикальное и / или горизонтальное движение.Поддерживает следующие атрибуты в любом из следующих трех форматов: значения от -100 до 100, оканчивающиеся на «%», указывающие процент относительно себя;значения от -100 до 100, оканчивающиеся на "% p", обозначающие процент относительно его родителя;значение с плавающей запятой без суффикса, указывающее абсолютное значение.Представляет TranslateAnimation.

%p поможет вам сделать то, что вы хотите.

1 голос
/ 03 апреля 2019

Вы можете реализовать ту же анимацию программно, как в Kotlin:

val bounceAnimation = TranslateAnimation(0f, 0f, fromYDelta, toYDelta).apply {
    duration = 1000
    repeatCount = 1000000
    repeatMode = Animation.REVERSE
    interpolator = AccelerateDecelerateInterpolator()
}

view.startAnimation(bounceAnimation)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...