Hallo!
Ich habe folgendes Problem:
Ich möchte 100 kleine, rote Rechtecke auf dem Bildschirm zeichnen lassen. Zu Anfang sind diese zufällig verteilt. Anschließend sollen die Rechteck nach und nach animiert sortiert werden (es geht um eine Visualisierung von Sortierverfahren wie hier: http://de.academic.ru/pictures/dewiki/113/quicksort.png ).
Ich habe nun folgendes versucht:
Java
public class hauptprogramm extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Random rand=new Random(System.currentTimeMillis());
int[] zahlen = new int[100];
for(int i=1; i<=100; i++)
{
int pos = 0;
while(zahlen[pos] != 0)
pos = Math.abs(rand.nextInt())0;
zahlen[pos] = i;
}
SortView sort = new SortView(this, zahlen);
setContentView(sort);
int temp;
for(int i=0; i < zahlen.length; i++){
for(int j=0; j < zahlen.length-1; j++){
if(zahlen[j+1] < zahlen[j]){
temp = zahlen[j];
zahlen[j] = zahlen[j+1];
zahlen[j+1] = temp;
sort.update(zahlen); //
sort.postInvalidate(); // Hier soll nun jedes Mal das neue Array gezeichnet werden.
}
}
}
}
}
Alles anzeigen
Java
class SortView extends View{
Paint p;
int[] zahlen;
public SortView(Context context, int[] zahlen){
super(context);
p = new Paint();
p.setColor(Color.RED);
this.zahlen=zahlen;
}
public void onDraw(Canvas canvas){
for(int i=0; i<100; i++)
canvas.drawRect(zahlen[i]* 3, i * 3,zahlen[i] * 3+2 , i * 3+2, p);
}
public void update(int[] zahlen){
this.zahlen=zahlen;
}
}
Alles anzeigen
Das Sortieren funktioniert auch alles wunderbar und das Ergebnis wird korrekt gezeichnet. Allerdings werden die Zwischenschritte nicht gezeichnet. Was muss ich anders machen?
Vielen Dank für eure Hilfe!