Android создает тест на равенство плавающих анимацийAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android создает тест на равенство плавающих анимаций

Сообщение Anonymous »


Я пробую простой проект с помощью Android Jetpack Compose. У меня есть анимированное состояние с плавающей запятой (с использованием animateFloatAsState), которое изменяется от 0 до 1, примерно так:

var xTarget по памяти {mutableFloatStateOf(0F) } val x: Плавающее значение с помощью animateFloatAsState( целевое значение = xTarget, анимацияSpec = tween(durationMillis = xDuration, easing = xEasing), label = "x анимация", ) { х -> когда (х) { 0 -> xTarget = 1 1 -> xTarget = 0 } } с кнопкой, запускающей анимацию, установив xTarget = 1. Теперь я хочу отреагировать, когда x = 0,5, примерно так:

if (x == 0,5) Log.d(LOG_TAG, «Середина») Но я считаю, что это ненадежно — оно не выполняется при всех запусках, чего можно было ожидать, поскольку мы имеем дело с равенством анимированного числа с плавающей запятой.

Как вы думаете, как лучше всего с этим справиться?

Я могу придумать два способа на ум: 1) вместо этого протестировать небольшой интервал - но это не идеально, поскольку граница между ненадежностью и большим количеством попаданий резкая и зависит от скорости анимации. . И 2) что-то вроде

var isRightTested : логическое значение по памяти {mutableStateOf(false) } if (x>0,5 && !isRightTested || x < 0,5 && isRightTested) { isRightTested = !isRightTested // ДЕЛАТЬ } Это кажется слишком запутанным (отредактируйте — теперь оно гораздо более лаконично, см. мой комментарий ниже).
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»