Intereting Posts
Как вставить один макет в другой в моем случае? Как выбрать видео из галереи в телефоне? Экран действия: значок со значком вверх Как добавить заголовок, фрагмент и значок в ClusterItem? Функция Samsung «Оптимизация приложения» отключает фоновые приложения через 3 дня Динамическое изменение размеров динамиков с помощью ViewFlipper Как я могу ссылаться на внешние файлы jar в общем каталоге (а не на lib) для создания проекта андроида с помощью ant? Импортировать проект без файла .project Android 5 – Изменение маршрута ввода аудио по умолчанию для использования внешней USB-карты при потоковой передаче Индивидуальная ориентация видеозаписи Как получить метаданные из картинки? Android Studio – все имена файлов в проекте красные, но ошибок нет Перемещение блока между минимальным значением и максимальным значением в NumberPicker Как я могу получить onclick событие в веб-браузере в Android? Android Google Chrome не срабатывает после приложения lockscreen

В чем причина создания onAnimationCancel () в Animator.AnimatorListener?

Android SDK Animator показывает:

Public void cancel ()

Отменяет анимацию. В отличие от end (), cancel () заставляет анимацию останавливаться на своих дорожках, отправляя onAnimationCancel (Animator) своим слушателям, а затем сообщение onAnimationEnd (Animator).

Вызов некоторого метода только тогда, когда анимация не отменяется. Вот пример из DeskClock от AOSP:

rotateAnimatorY.addListener(new AnimatorListenerAdapter() { private boolean mIsCanceled = false; @Override public void onAnimationCancel(Animator animation) { mIsCanceled = true; } @Override public void onAnimationEnd(Animator animation) { if (!mIsCanceled) { view.setRotation(0); } view.setLayerType(View.LAYER_TYPE_NONE, null); } }); 

OnAnimationCancel () устанавливает только флаг mIsCanceled , все работы выполняются в onAnimationEnd () . Объедините состояние END и статус CANCEL, во всех случаях необходимо выполнить не более 3 видов работы:

 a), cancel & end. These work can live in **onAnimationEnd()** b), cancel &!end. These live in **onAnimationCancel()** c), !cancel & end. These are annoying. 

Для c), вы должны включить флаг, например mIsCanceled .

Я просматриваю приложения AOSP и не получаю никакой пользы от создания отдельного метода onAnimationCancel () . Большинство из них просто «ничего не делают» или не дублируют коды onAnimationEnd ().

Почему бы не объединить флаг отмены в onAnimaitonEnd:

 abstract void onAnimationEnd(Animator animation, boolean canceled) 

IMOP, он более изящный и легкий.

В чем причина создания onAnimationCancel () в Animator.AnimatorListener?

Solutions Collecting From Web of "В чем причина создания onAnimationCancel () в Animator.AnimatorListener?"