movimientos - mover figuras en java
cómo hacer animación de traducción para cada elemento de la lista (7)
la animación de cada artículo no debe comenzar al mismo tiempo
Si lo deseas, puedes hacer algo como esto:
layout_controller.xml:
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="30%"
android:animation="@anim/scale" />
scale.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="0.1"
android:toXScale="1"
android:fromYScale="0.1"
android:toYScale="1.0"
android:duration="800"
android:pivotX="10%"
android:pivotY="10%"
android:startOffset="100" />
</set>
Y luego en su Java después de SetListAdapter () pegue el siguiente código:
LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(
this, R.anim.layout_controller);
getListView().setLayoutAnimation(controller);
tenga en cuenta que "android: delay" hace que las animaciones comiencen con retraso después de la anterior.
Tengo una vista de lista que reemplaza el método getView para poblarlo. ahora, quiero hacer que cada elemento de la lista se mueva o se mueva del lado derecho de la pantalla al lado izquierdo donde normalmente debería aparecer el elemento.
la animación de cada elemento no debe comenzar al mismo tiempo, debe demorar un par de ms antes de que los otros elementos se muevan ...
bueno, esta es mi clase de adaptador:
public class MyAdapter extends ArrayAdapter<String>{
private Context context;
private String[] info;
public MyAdapter(Context context, int resource,
String[] objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
this.context = context;
this.info = objects;
}
protected class RowViewHolder {
public TextView text1;
public CheckBox cb;
public String ss;
}
@Override
public View getView(int pos, View inView, ViewGroup parent) {
View vix = inView;
RowViewHolder holder;
if (vix == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vix = inflater.inflate(R.layout.check_list, null);
}
holder = new RowViewHolder();
holder.text1 = (TextView) vix.findViewById(R.id.info_group);
holder.text1.setText(info[pos]);
holder.ss = info[pos];
holder.cb = (CheckBox) vix.findViewById(R.id.check);
holder.cb.setTag(holder.ss);
holder.cb.setOnCheckedChangeListener(CbListen);
vix.setTag(holder);
return vix;
}
private OnCheckedChangeListener CbListen = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton com, boolean pool) {
// TODO Auto-generated method stub
String state = (com.getTag()).toString();
if(com.isChecked()){
System.out.println(state+" CHECKED");
}else{
System.out.println(state+" UNCHECKED");
}
}
};
}
¿alguna idea? :)
ACTUALIZAR
Bueno, seguramente lo es! LOL: p
solo descargue esos ApiDemos "como lo que dijo Farhan" y ustedes encontrarán algún tipo de muestra como LayoutAnimation2 en la vista del paquete.
allí, cada elemento de la lista está siendo animado para poblar hacia abajo mediante la animación de traducción mientras el alfa está cambiando respectivamente.
esto es lo que hago para mi caso:
AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(500);
set.addAnimation(animation);
animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 50.0f,Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f
);
animation.setDuration(1000);
set.addAnimation(animation);
LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);
group_list.setLayoutAnimation(controller);
pongo esto debajo de mi función setAdapter (), ustedes pueden hacer que se vea más cómodo con los efectos de aceleración-deceleración, etc.
:pag
@ user724861 ha dado la respuesta perfecta !! como sea que encontré es confuso dónde colocar el código que ha sugerido ... puse ese código en mi actividad ListFragment de la siguiente manera ...
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(300);
set.addAnimation(animation);
/*animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 50.0f,
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
0.0f, Animation.RELATIVE_TO_SELF, 0.0f);
animation.setDuration(10);
set.addAnimation(animation); just comment if you don''t want :) */
LayoutAnimationController controller = new LayoutAnimationController(
set, 0.5f);
lv.setLayoutAnimation(controller);
adapter = new LazyAdapter(getActivity(), numResults, nodes, tabType);
setListAdapter(adapter);
}
Simplemente agregue en el diseño principal de la actividad listview
Android: animatelayoutchanges = "true"
¡Disfrutar!
También puede configurar la animación con el atributo xml. Animación de diseño de su ListView. Puede crear cualquier tipo de animación usando el archivo xml en la carpeta res / anim . Será útil si desea reutilizarlo para cualquier otra vista de lista y también administrará bien su código.
Por favor, avíseme si necesita ayuda con respecto a la creación de animación en xml.
Usando LayoutAnimations!
En los documentos que puedes configurar a través de android:layoutAnimation xml attr
getView () rellena cada elemento de tu actividad. intenta crear tu animación en getView con Timer .
package com.Animation1;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView;
import java.util.ArrayList;
public class Animation1Activity extends ListActivity implements
AdapterView.OnItemSelectedListener {
Animation anim = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
anim = AnimationUtils.loadAnimation( this, R.anim.magnify );
setContentView(R.layout.main);
ListView v = getListView(); // set up item selection listener
v.setOnItemSelectedListener( this ); // see OnItemSelectedListener methods below
ArrayList<String> items = new ArrayList<String>();
items.add( "Red" );
items.add( "Grey" );
items.add( "Cyan" );
items.add( "Blue" );
items.add( "Green" );
items.add( "Yellow" );
items.add( "Black" );
items.add( "White" );
ArrayAdapter itemsAdapter = new ArrayAdapter( this, R.layout.row, items );
setListAdapter( itemsAdapter );
}
protected void onListItemClick(ListView l,
View v,
int position,
long id) {
v.startAnimation( anim );
}
// --- AdapterView.OnItemSelectedListener methods ---
public void onItemSelected(AdapterView parent,
View v,
int position,
long id) {
v.startAnimation( anim );
}
public void onNothingSelected(AdapterView parent) {}
}