2013-05-31 40 views
8

Tôi đang cố gắng hiển thị danh sách yêu thích theo cách mà mỗi một trong số chúng hoạt ảnh và sau đó trở thành hiển thị để sau mỗi lần chúng hoạt ảnh và hiển thị với người dùng. Tôi nhưng Khi tôi thực hiện các hình ảnh động, nó không làm việc trên mục individial, nhưng làm việc trên toàn bộ listview :(Animate từng mục của Listview khi hiển thị

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

Làm thế nào để làm cho từng người một hình ảnh động trên mỗi phần tử của danh sách xem. . đang mở rộng ArrayAdapter

Trả lời

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

bạn có thể thêm một số giải thích không? –

12

tôi nghĩ Layout Animation là tốt cho trường hợp của bạn, hãy làm theo:

Tạo tập tin XML hoạt hình của bạn trong anim thư mục: ví dụ:

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

Tôi tên này như slide_right_in.xml
Sau đó tạo một file hình ảnh động XML với phần tử gốc của layoutAnimation :(Tôi đã đặt tên tệp này là my_layout_animation.xml)

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

Bây giờ bạn đã sẵn sàng! bạn có thể áp dụng nó trên tất cả các view container, cho xem danh sách Ví dụ:

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

Hy vọng nó giúp

+1

điều này khiến ứng dụng gặp sự cố – Postback

+0

@Postback Hãy cho tôi biết loại sự cố mà bạn gặp phải (stacktrace) –

+0

Chỉ cần thử mã này và sau đó tôi đã lấy lại nó. Vì vậy, không thể cung cấp cho bạn chi tiết. Ngay sau khi tôi mở Hoạt động bằng listView, ứng dụng đã bị lỗi – Postback

1

đây là một hướng dẫn để Android ListView animation

EDIT:
ý tưởng là tạo ra một người biết lắng nghe và animate xem bên trong nó:

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); 
    } 
}); 
Các vấn đề liên quan