#android #animation #view #z-order
#Android #Анимация #Вид #z-порядок
Вопрос:
Я пытался решить эту проблему уже несколько часов, но я совершенно не знаю, что делать.
У меня есть a LinearLayout
с двумя RelativeLayout
s, каждая одинаковой высоты. Видимость нижних «исчезла» до начала анимации, и я хочу, чтобы она «выскользнула» из верхней onClick
. Слайд работает отлично, но анимированный вид ВСЕГДА находится поверх другого, что бы я ни делал. Поскольку это должно выглядеть так, как будто нижний «выдвигается», это не тот эффект, которого я хочу достичь.
Моя анимация выглядит так:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromYDelta="-100%"
android:interpolator="@android:anim/linear_interpolator"
android:toYDelta="0"
/>
Я уже пытался сделать view.bringToFront()
с видом, который не анимирован, и должен просто оставаться поверх анимированного. Но в результате не анимированный вид отображается как вид снизу.
Кто-нибудь может мне помочь?
Ответ №1:
Это поддерживается в таких макетах, как Relative layout и framelayout, где поддерживается размещение дочерних представлений по z-индексу. Вы можете попробовать:
view.bringToFront();
Объяснение из документов: измените порядок z представления в дереве, чтобы оно было поверх других родственных представлений.
Вы также можете попробовать:
bringChildToFront(View child)
Измените порядок z дочернего элемента, чтобы он был поверх всех других дочерних элементов.
Эти методы изменяют дочерние представления в дереве представлений. подходящее место для этого — метод animationEnded вашей анимации.
Комментарии:
1. Спасибо, чувак! Ключевым моментом было изменение оберточного контейнерного описания обоих RelativeLayouts также на RelativeLayout. Теперь работает нормально!