2012-01-17 17 views
10

Quiero animar los elementos de la vista de lista. En la actualidad, estoy aplicando la animación de transición en los elementos de la lista cada vez que se agregan nuevos elementos. Pero esta no es la animación que quiero lograr. Quiero que cuando se agrega un nuevo elemento en la vista de lista en ese momento toda la vista de lista mueva un lugar hacia abajo para dar paso al elemento recién agregado.Agregar animación a una Vista de lista en Android

Actualmente el código que estoy utilizando es:

set = new AnimationSet(true); 

    animation = new AlphaAnimation(0.0f, 1.0f); 
    animation.setDuration(50); 
    set.addAnimation(animation); 

    animation = new TranslateAnimation(
     Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f, 
     Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f 
    ); 
    animation.setDuration(150); 
    set.addAnimation(animation); 

    LayoutAnimationController controller = new LayoutAnimationController(set, 1.0f); 
    l.setLayoutAnimation(controller); 
    l.setAdapter(listAdaptor); 

Y a continuación, mientras que los artículos a través de la adición de botón onclick

l.startLayoutAnimation(); 

¿Alguna otra sugerencia para lograr dicha animación.

Respuesta

14

Tengo la solución a esto. Animo cada elemento añadido en el método getView de mi Adaptador personalizado.

public View getView(int position, View convertView, ViewGroup parent) { 

     View v = convertView; 

     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) getActivity() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.simple_list_item_1, null); 
     } 

     ListData o = list.get(position); 
     TextView tt = (TextView) v.findViewById(R.id.toptext); 

     tt.setText(o.content); 

     Log.d("ListTest", "Position : "+position); 
     if(flag == false) { 
     Animation animation = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_top_to_bottom); 
     v.startAnimation(animation);} 
     return v; 
    } 

Y así conseguí la animación como había establecido.

+0

recibo un error en 'R.anim.slide_top_to_bottom' anim no se puede resolver o no es un campo – Nishant

+0

¿Agregaste el xml en la carpeta anim? – ASH

+0

¿No puedes dar el código para ese archivo? – Nishant

Cuestiones relacionadas