Android анимированные макеты и представления - PullRequest
1 голос
/ 30 марта 2020

У меня есть ConstraintLayout с навигацией внизу и контейнером фрагментов, который занимает остальную часть экрана. Я хочу программно добавить / удалить представление между навигацией и контейнером фрагментов с анимацией.

У меня есть этот код для добавления и анимации нового представления:

//Adding the view to the main layout
ConstraintLayout layout = findViewById(R.id.ConstraintLayout);
getLayoutInflater().inflate(R.layout.newView, layout);

//Start animation immediately with a library
YoYo.with(Techniques.SlideInUp).duration(800).playOn(findViewById(R.id.newView));

Теперь Код выше не выглядит solid для меня. Я хотел бы найти лучший способ, но пока он работает.

После добавления нового представления я изменяю ограничения контейнера фрагмента с верхней части навигации на верхнюю часть нового представления. Размер контейнера фрагмента установлен равным match_constrainst, поэтому, изменяя ограничения, он теперь будет немного меньше.

    ConstraintSet constraintSet = new ConstraintSet();
    constraintSet.clone(layout);
    constraintSet.connect(R.id.fragment_container,ConstraintSet.BOTTOM,R.id.newViewWrapper,ConstraintSet.TOP,0);
    constraintSet.applyTo(layout);

Что мне не удалось сделать, так это анимировать изменение размера контейнер фрагментов. И вообще, я никогда не работал с анимацией в android.

Есть ли лучший или лучший способ анимировать виды и макеты в android или есть библиотека, которая может это сделать?

1 Ответ

1 голос
/ 31 марта 2020

Если вы используете Constraintlayout, тогда вы можете использовать TransitionManager для анимации макета. Настройка basi c выглядит следующим образом:

TransitionManager.beginDelayedTransition(layout);

Она автоматически анимирует макет после того, как вы, например, измените размер представления / ограничения.

Для изменения ограничений вы можете использовать ConstraintSet.

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