С новым API анимации, который был представлен в Android 3.0 (Honeycomb), очень просто создавать такие анимации.
Скольжение View
вниз на расстояние:
view.animate().translationY(distance);
Позже вы можете сдвинуть View
назад в исходное положение, как это:
view.animate().translationY(0);
Вы также можете легко комбинировать несколько анимаций. Следующая анимация будет скользить View
вниз по высоте и одновременно плавно увеличивать ее:
// Prepare the View for the animation
view.setVisibility(View.VISIBLE);
view.setAlpha(0.0f);
// Start the animation
view.animate()
.translationY(view.getHeight())
.alpha(1.0f)
.setListener(null);
Затем вы можете исчезнуть View
и сдвинуть его обратно в исходное положение. Мы также установили, AnimatorListener
чтобы мы могли установить видимость View
спины, как GONE
только анимация будет завершена:
view.animate()
.translationY(0)
.alpha(0.0f)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setVisibility(View.GONE);
}
});
View
когда его видимость установленаView.GONE
? Если вы установите его видимость для чего-либо кромеView.VISIBLE
этого, тоView
он не будет виден. Я не понимаю, что вы спрашиваете. Если вы хотите, чтобы ваша анимация была видимой, не устанавливайте видимостьView
дляView.GONE
.onAnimationEnd
каждый раз вызывается для многократной анимации, что означает, что онonAnimationEnd
вызывается также, когда представление отображается, который устанавливает его видимость Gone и т. Д.У меня были проблемы с пониманием применения принятого ответа. Мне нужно немного больше контекста. Теперь, когда я понял это, вот полный пример:
MainActivity.java
activity_mail.xml
Ноты
INVISIBLE
.INVISIBLE
. Если вы не полностью анимируете за пределами экрана, тогда вы можете добавить альфа-анимацию и установить видимость с помощьюAnimatorListenerAdapter
.источник
.setVisibility(View.INVISIBLE);
функции сдвига вверх не будет работать так, как ожидается.Translate Animation
перемещает вид. Если вы хотите , чтобы оживить взгляд , как сам потом использовать его масштабированиеScaleAnimation anim = new ScaleAnimation(1, 1, 0, 1)
Теперь нужно сделать анимацию изменения видимости, с помощью
Transition API
которой доступно в пакете поддержки (androidx). Просто вызовите метод TransitionManager.beginDelayedTransition с переходом по слайду, а затем измените видимость представления.activity_main.xml
Проверьте этот ответ с помощью других стандартных и пользовательских примеров перехода.
источник
minSdkVersion 21
androidx
пакета. Он отлично работает на предварительно 21 API.Самое простое решение: установить
android:animateLayoutChanges="true"
на контейнер с вашими взглядами.Чтобы поместить это в некоторый контекст: если у вас есть макет, как показано ниже, все изменения видимости для представлений в этом контейнере будут анимироваться автоматически.
Вы можете найти более подробную информацию об этом на Animating Layout Changes - Android Developer
источник
Вы можете начать корректировать,
Animation
когда видимостьLinearLayout
изменений, создав новый подклассLinearLayout
и переопределивsetVisibility()
для запускаAnimations
. Рассмотрим что-то вроде этого:источник
View
ответственность за свои собственные анимации, что НИКОГДА не то, что вы хотите. Представьте, что вы хотите анимировать по-View
другому в другой части вашего приложения. Что вы делаете тогда? Добавить флаг, чтобы не автоматически анимировать видимость? ПодклассView
и переопределить,setVisibility()
чтобы удалить анимацию? Или еще хуже реализоватьsetVisibility()
с другой анимацией? Это становится все хуже и хуже оттуда. Не используйте это «решение».Котлин
На основе Suragch «s ответ , здесь это элегантный способ использования View расширения:
И тогда, где бы вы ни хотели его использовать, вам просто нужно
myView.slideUp()
илиmyView.slideDown()
источник
источник
setAlpha
?Вы можете скользить вверх и вниз любого вида или макета, используя приведенный ниже код в приложении для Android
источник
Используйте этот класс:
источник
Использование ObjectAnimator
источник
0.toFloat()
тоже можно просто0f
У меня был угловой случай, когда высота моего взгляда была еще
zero
такой ...источник
Вот мое решение. Просто получите ссылку на ваш вид и вызовите этот метод:
Не нужно больше ничего делать =)
источник
Ответ Сурагча в Котлин. Это сработало для меня.
}
источник
Вы можете использовать простые три строки кода, чтобы показать анимацию ...
источник
С расширениями Kotlin вы можете использовать это:
Пример для расширения:
источник
Один из простых способов:
источник