2013-11-13 3 views
1

GridLayout (она находилась в центре относительного расположения)Анимационные GridLayout от пережитого видимого

<GridLayout 
    android:id="@+id/ticketLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/pile" 
    android:visibility="gone" 
    android:animateLayoutChanges="true" > 

<!-- some content --> 

Теперь, когда я сделать его видимым

ticketLayout.setVisibility(View.VISIBLE); 

это только кажется, что нет анимации вообще. Я что-то упускаю?

+0

ли вы ожидали анимации? Анимация не подразумевается. – Leandros

+0

android: animateLayoutChanges = "true" - это попытка включить анимацию здесь, но я думаю, что это должно пойти к родителям - но пока не уверен - сражаться в подобной области на данный момент .. – ligi

ответ

1

Вам необходимо оживить ваш View. Вы можете сделать это, например, так:

mticketLayout.setAlpha(0f); 
mticketLayout.setVisibility(View.VISIBLE); 

// Animate the content view to 100% opacity, and clear any animation 
// listener set on the view. 
mticketLayout.animate() 
     .alpha(1f) 
     .setDuration(mShortAnimationDuration) 
     .setListener(null); 

Посмотрите на Android Обучение: http://developer.android.com/training/animation/crossfade.html

1

Для этого нет анимации по умолчанию. Чтобы добиться того, чего вы хотите, я думаю, вам нужно сыграть анимацию по альфа-функции вашего gridview. В зависимости от того, какой минимальный API вы хотите поддерживать, вы можете использовать старую систему анимации или новую, или даже использовать NineOldAndroids.

Флаг animateLayoutChange указывает, что если вы динамически добавляете представление в это представление сетки, системе придется играть по умолчанию. (Скорее всего, эффект затухания). Это не помогает для самого вида сетки.

Смежные вопросы