layoutAnimation работает только один раз

у меня есть LinearLayout С layoutAnimation свойство, которое используется для настройки ExpandableListView. вот так:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layoutAnimation="@drawable/list_layout_controller"
    android:orientation="vertical" >

когда я нажимаю на список, анимация будет отображаться. Но он работает только один раз, и он не будет анимировать список в следующем щелчке мыши. Почему?

пожалуйста, дайте мне знать, Если вам нужно больше описания.

спасибо

5 ответов


анимация макета запускается при добавлении представлений в макет. Таким образом, вам придется вручную добавлять/удалять представления на каждом развертывании/сворачивании для работы анимации макета.

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

вы также можете попробовать, изменив видимость просмотров в onClick(). Но не уверен насчет этого. Дай мне знать.

надеюсь, что это поможет.


сначала вы хотите объявить

Animation  listanimation = AnimationUtils.loadAnimation(mainActivity.this, R.anim.list_layout_controller);

и каждый раз clearAnimation первый. В clickevent LinearLayout

 linearLayout.clearAnimation();
 linearLayout.startAnimation(listanimation);

вызов

listView.scheduleLayoutAnimation ();

перед всеми изменениями в списке


попробуйте перезапустить анимацию по каждому пункту нажмите:

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      view.getAnimation().start();
      //your custom logic
}
});

просто использовать

public void startLayoutAnimation ()

http://developer.android.com/reference/android/view/ViewGroup.html#startLayoutAnimation()