2013-05-31 3 views
8

Я пытаюсь показать эллименты listview таким образом, чтобы каждый из них анимировал, а затем стал видимым, поэтому после одного за другим они оживляют и становятся видимыми для пользователя. , но когда я реализовал анимацию, ее не работает на individial пункта, но работает на всей ListView :(Анимация каждого элемента списка при отображении

public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row =layoutInflater.inflate(R.layout.categories_row, parent, false); 




     tvCatName = (TextView) row.findViewById(R.id.tvCatName); 

     tvCatName.setText(Data.alCategoriesModels.get(position).catname); 


     row.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 

       Toasts.pop(activity, "Category id : " + Data.alCategoriesModels.get(position).catID); 

      } 
     }); 

//  row.setAnimation(animation); 
     row.startAnimation(animation); 

     return row; 
    } 

enter image description here

Как сделать один за другим анимации на каждом элементе списка. Я . я продлить ArrayAdapter

ответ

0
int delay=(position-list.getFirstVisiblePosition)*200; 
if(delay<=200) 
    delay=200; 
animation.setStartOffset(delay); 
+0

вы можете добавить какое-то объяснение? –

12

Я думаю Layout Анимация хорошо для вашего случая, выполните:

Создайте свой XML-файл анимации в Anim папку: , например:

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" 
    android:duration="400" 
    android:fromXDelta="-100%" 
    android:toXDelta="0%"/> 

Я назвал это как slide_right_in.xml
Затем создать другой анимационный XML-файл с корневым элементом layoutAnimation :(Я назвал этот файл как my_layout_animation.xml)

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:animation="@anim/slide_right_in" 
    android:delay="0.5"/> 

Теперь вы готовы к работе! вы можете применить его на каждом виде контейнера, для просмотра списка примера:

<ListView 
    ... 
    android:layoutAnimation = "@anim/my_layout_animation" 
    ... /> 

Надеется, что это помогает

+1

приводит к сбою приложения – Postback

+0

@Postback Позвольте мне узнать тип аварии, который вы получили (stacktrace) –

+0

Просто попробовал этот код, а затем я снова его вынул. Поэтому вы не можете предоставить вам подробную информацию. Как только я открыл Activity с помощью listView, приложение разбилось – Postback

1

После баловаться с моей собственной реализацией анимации, какой вид работали половину времени, я нашел ListViewAnimations#ExpandableListItemAdapter что было именно то, что мне нужно.

Вот их API демо приложение на Google Play: ListViewAnimations

1

вот учебник Android ListView animation

EDIT:
идея создания слушателя и живой вид внутри него:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView,final View view, final int position, 
     long id) { 
      anim.setAnimationListener(new Animation.AnimationListener() { 

       @Override 
       public void onAnimationStart(Animation animation) { 
       } 

       @Override 
       public void onAnimationRepeat(Animation animation) {} 

       @Override 
       public void onAnimationEnd(Animation animation) { 
        ItemDetail item = aAdpt.getItem(position); 
        aAdpt.remove(item); 
       } 
      }); 
     view.startAnimation(anim); 
    } 
}); 
Смежные вопросы