Невозможно изменить порядок z для анимированного представления

#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. Теперь работает нормально!