2016-07-11 10 views
1

Ich bin neu in der Programmierung und ich habe eine Aufgabe, eine Gridview mit spaltenweiser Animation anzuzeigen. Ich habe es so versucht.Wie man eine Gridview spaltenweise in Android animieren

Meine res/Anim/animation.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:duration="1500" 
     android:fromYDelta="5" 
     android:toYDelta="90%" /> 
</set> 

Teil meiner MainActivity.java

Animation anim = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation); 
gridView.setAnimation(anim); 
anim.start(); 

Im MainActivity.java bitte helfen Sie mir, wo ich zu korrigieren. Dadurch bekomme ich volle Gridview-Animation.

+0

in Ihrem Adapter machen Eltern View wird animieren .......... – sushildlh

+0

Bitte senden Sie mir ein Beispiel. es könnte für mich besser sein. –

Antwort

2

Versuchen Sie dies in Ihrem Adapters getView(),

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View gridItemView; 
    LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (convertView == null) { 

     gridItemView = inflater.inflate(R.layout.layout, null); 

     // Grid item child views 
     TextView textView = (TextView) gridItemView.findViewById(R.id.grid_text); 
     ImageView imageView = (ImageView)gridItemView.findViewById(R.id.grid_image); 
     textView.setText(web[position]); 
     imageView.setImageResource(imageId[position]); 

     // Move this initialization to constructor so that its not initalized again and again. 
     Animation anim = AnimationUtils.loadAnimation(mContext,R.anim.item_anim); 

     // By default all grid items will animate together and will look like the gridview is 
     // animating as a whole. So, experiment with incremental delays as below to get a 
     // wave effect. 
     anim.setStartOffset(position * 500); 

     gridItemView.setAnimation(anim); 
     anim.start(); 
    } else { 
     gridItemView = (View) convertView; 
    } 

    return gridItemView; 
} 

UPDATE: Wenn Sie spaltenweise Animation wollen, versuchen Sie dies,

anim.setStartOffset((position % numColumns) * 500); 

wo numColumns ist die Anzahl der Spalten. Sie könnten mit verschiedenen Werten für setStartOffset() experimentieren, um verschiedene Animationseffekte zu erhalten.

+0

@Maha, bitte akzeptieren Sie die obige Antwort, wenn Sie es zufriedenstellend fanden. Vielen Dank! – Tony

+0

Danke für die Lösung meines Problems. und ich führe das Programm aus ... & ich werde deine Antwort akzeptieren –

+0

Diese Logik läuft für die Reihe, aber nicht für die Spalte weise. –

Verwandte Themen