2013-12-09 4 views
0

Я пытаюсь применить анимацию масштабирования к моему списку. Идея состоит в том, что список рушится вверх, так как я делаю это, масштабируя ось Y до нуля. Анимация не применяется правильно, однако - список просто исчезает в течение времени, указанного в файле XML, без анимации интерполяции, а затем снова появляется, когда продолжительность завершена. Это происходит независимо от того, какой fillAfter установлен (что должно быть правдой, верно?).ListView анимация не масштабируется правильно

Почему это неправильно интерполируется и почему оно снова появляется после окончания анимации?

аним файл:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:fromYScale="1.0" 
     android:toYScale="0.0" 
     android:duration="500" 
     android:pivotY="0" 
     android:fillAfter="true" 
     /> 
</set> 

Как назвать анимации:

ListView list = (ListView) getView().findViewById(android.R.id.list); 
Animation collapseList = AnimationUtils.loadAnimation(getActivity(), R.anim.collapse_search_results); 
list.startAnimation(collapseList); 

ответ

0

Хорошо, я это исправил, добавив значения pivotX, fromXScale и toXScale в мой файл XML. Мне они нужны, хотя я не масштабируюсь по оси X.

Анимация все еще не сохраняется, но я хотел все равно избавиться от фрагмента, содержащего ListView, поэтому я просто добавил слушателя, чтобы уничтожить фрагмент, когда анимация закончилась.

Мой рабочий XML-файл:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:fromYScale="1.0" 
     android:toYScale="0.0" 
     android:fromXScale="1.0" 
     android:toXScale="1.0" 
     android:duration="400" 
     android:pivotY="0" 
     android:pivotX="0" 
     android:fillAfter="false" 
     /> 
</set> 
Смежные вопросы