2013-05-31 74 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

我覺得佈局動畫有利於你的情況,如下:

例如 :3210

動畫文件夾中創建動畫的XML文件

<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
然後創建layoutAnimation的根元素另一個動畫XML文件:(我命名該文件作爲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

剛剛試過這段代碼,然後我又把它拿出來了。所以不能提供你的細節。只要我用listView打開活動,應用程序崩潰了 – Postback

1

這裏是一個教程Android ListView animation

編輯:
的想法是創建一個監聽器和動畫視圖裏面:

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); 
    } 
}); 
相關問題