Я использую TabLayout с 5 различными фрагментами. На 3 из этих фрагментов должен появиться android.support.design.widget.FloatingActionButton
. Прямо сейчас я просто устанавливаю видимость FAB, когда вкладка меняется, но я хотел бы иметь анимацию, в которую входит и выходит FAB. Как я могу достичь этого в Android?Как анимировать FloatingActionButton новой библиотеки поддержки дизайна
ответ
Потому что я не хочу, чтобы продлить FloatingActionButton
, я сделал это так:
FloatingActionButton createButton;
// ...
Animation makeInAnimation = AnimationUtils.makeInAnimation(getBaseContext(), false);
makeInAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) {
createButton.setVisibility(View.VISIBLE);
}
});
Animation makeOutAnimation = AnimationUtils.makeOutAnimation(getBaseContext(), true);
makeOutAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
createButton.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) { }
});
// ...
if (createButton.isShown()) {
createButton.startAnimation(makeOutAnimation);
}
// ...
if (!createButton.isShown()) {
createButton.startAnimation(makeInAnimation);
}
Я заменил 'setAnimation()' вызовы 'startAnimation()' в вашем ответе - см. Аналогичный вопрос здесь: [FAB не оживляет - тестовый код и скриншот прилагаются ] (http://stackoverflow.com/questions/31773559/fab-does-not-animate-test-code-and-screenshot-attached) –
Самый простой способ - расширить класс FloatingActionButton и переопределить setVisibility. Как это:
public void setVisibility(final int visibility) {
if (getVisibility() != View.VISIBLE && visibility == View.VISIBLE && inAnim != null) {
animator = // create your animator here
super.setVisibility(visibility);
} else if (getVisibility() == View.VISIBLE && visibility != View.VISIBLE) {
AnimatorListenerAdapter listener = new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animator) {
Button.super.setVisibility(visibility);
}
});
animator = // create your animator here
animator.addListener(listener);
}
}
Код выше берется из класса Button из my library. Вы можете найти примеры реализации в источниках.
Вы хотите что-то вроде этого? Но вместо оживления на onScrollListener
вы можете анимировать его по методу onCreateView
или onCreate
. Следуйте за этим ->Implement Floating Action Button – Part 2
В основном код суммирует только к этому
Animate Скрыть
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.animate().translationY(floatingActionButton.getHeight() + 16).setInterpolator(new AccelerateInterpolator(2)).start();
и
Animate назад Показать
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
но мы не хочу, чтобы он анимировал только, чтобы скрыть это так, «Анимация скрыть» будет просто b е что-то вроде этого
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.setTranslationY(floatingActionButton.getHeight() + 16);
On «Animate Скрыть» положить, что на методе onCreateView
или onCreate
так, что на вашем FAB скрыта, когда вы создаете этот фрагмент, и вы можете затем добавить обработчик и работоспособным, которые будут вызывать " анимации назад показать»после того, как второй или два, чтобы показать свою анимацию
или вы могли бы использовать время для коротких анимационных
int mShortAnimationDuration = getResources().getInteger(
android.R.integer.config_shortAnimTime);
Я попробовал этот на OnScroll, но не пробовал на onCreateView
или onCreate
, но я предполагаю, что это должно работать
- EDIT -
Попробуйте этот код;)
public class DummyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int mShortAnimationDuration = getResources().getInteger(
android.R.integer.config_shortAnimTime);
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.setTranslationY(floatingActionButton.getHeight() + 16);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
}, mShortAnimationDuration);
}
}
}
Могу ли я использовать это в своем (не некоммерческом) приложении? Должен ли я давать кредит? – Penn
уверены, что нет проблем: D –
Пересмотр библиотеки дизайн поддержка 22.2.1 (июль 2015) добавил hide()
и show()
методов класса FloatingActionButton
, поэтому вы можете использовать их с этого момента.
http://developer.android.com/tools/support-library/index.html
Они не предлагают анимацию из окна, хотя – ThanosFisherman
@ThanosF FAB будет анимировать при использовании 'show()' или 'hide()', но только если представление уже выложено. –
Я пробовал это, и он работает! – Bruce
Шкура/шоу анимация для термоусадочного/попа автоматически обрабатываются с помощью новой версии библиотеки поддержки. (22.2.1) Тогда OnTabChange слушателя показать или скрыть кнопку плавающего действия с помощью показать/скрыть методы, предоставляемые новой библиотекой.
fab.show(); или fab.hide();
- 1. InflateException с FloatingActionButton из официальной библиотеки дизайна
- 2. Программно изменить размер библиотеки поддержки дизайна дизайна?
- 3. Использование статических фрагментов с помощью CoordinatorLayout новой библиотеки поддержки дизайна
- 4. Как создать навигационную панель библиотеки поддержки дизайна?
- 5. Использование библиотеки поддержки дизайна в Eclipse
- 6. Установка библиотеки поддержки для дизайна материалов
- 7. Проблема с поддержкой библиотеки поддержки дизайна Android
- 8. Как анимировать значок гамбургера для стрелки назад при использовании библиотеки поддержки дизайна?
- 9. Строка состояния не прозрачна при использовании новой библиотеки поддержки поддержки
- 10. Как использовать библиотеку поддержки дизайна?
- 11. ExecException при добавлении новой поддержки проектирования библиотеки
- 12. Как реализовать нижние листы с использованием новой библиотеки поддержки дизайна 23.2
- 13. FloatingActionButton ошибка библиотеки компиляции
- 14. Как изменить части макетов меню ящика меню Библиотеки поддержки дизайна
- 15. Как использовать Framelayout с NavigationView из библиотеки дизайна поддержки
- 16. Как отредактировать размер элемента в navigationView библиотеки поддержки дизайна?
- 17. Как установить разделитель между вкладками в TabLayout библиотеки поддержки дизайна?
- 18. FloatingActionButton, квадратная кнопка ниже уровня API 17
- 19. Библиотека поддержки дизайна V22 - Нет источников?
- 20. Меню и Autohide FloatingActionButton поддержки Android Design Library
- 21. Навигационный ящик из библиотеки поддержки по сравнению с библиотекой дизайна
- 22. Кнопка «Главная» не отображается при использовании библиотеки поддержки дизайна
- 23. Библиотека поддержки дизайна Android
- 24. О библиотеке поддержки дизайна
- 25. Что касается дневной темы последней библиотеки дизайна поддержки
- 26. TabLayout отсутствует после обновления Поддержка библиотеки поддержки дизайна
- 27. Добавить Spinner as Tab с помощью библиотеки поддержки дизайна
- 28. Использование библиотеки дизайна поддержки Android на пользовательском представлении
- 29. EditText getHint() возвращает null при использовании библиотеки поддержки дизайна
- 30. Ошибка раздувания чего-либо из библиотеки поддержки дизайна
Наилучший способ использования пользовательского FloatingActionButton.Behton –