View in Zeitabständen aktualisieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • View in Zeitabständen aktualisieren

    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: de.academic.ru/pictures/dewiki/113/quicksort.png ).
    Ich habe nun folgendes versucht:

    Java-Quellcode

    1. public class hauptprogramm extends Activity {
    2. /** Called when the activity is first created. */
    3. @Override
    4. public void onCreate(Bundle savedInstanceState) {
    5. super.onCreate(savedInstanceState);
    6. Random rand=new Random(System.currentTimeMillis());
    7. int[] zahlen = new int[100];
    8. for(int i=1; i<=100; i++)
    9. {
    10. int pos = 0;
    11. while(zahlen[pos] != 0)
    12. pos = Math.abs(rand.nextInt())0;
    13. zahlen[pos] = i;
    14. }
    15. SortView sort = new SortView(this, zahlen);
    16. setContentView(sort);
    17. int temp;
    18. for(int i=0; i < zahlen.length; i++){
    19. for(int j=0; j < zahlen.length-1; j++){
    20. if(zahlen[j+1] < zahlen[j]){
    21. temp = zahlen[j];
    22. zahlen[j] = zahlen[j+1];
    23. zahlen[j+1] = temp;
    24. sort.update(zahlen); //
    25. sort.postInvalidate(); // Hier soll nun jedes Mal das neue Array gezeichnet werden.
    26. }
    27. }
    28. }
    29. }
    30. }
    Alles anzeigen


    Java-Quellcode

    1. class SortView extends View{
    2. Paint p;
    3. int[] zahlen;
    4. public SortView(Context context, int[] zahlen){
    5. super(context);
    6. p = new Paint();
    7. p.setColor(Color.RED);
    8. this.zahlen=zahlen;
    9. }
    10. public void onDraw(Canvas canvas){
    11. for(int i=0; i<100; i++)
    12. canvas.drawRect(zahlen[i]* 3, i * 3,zahlen[i] * 3+2 , i * 3+2, p);
    13. }
    14. public void update(int[] zahlen){
    15. this.zahlen=zahlen;
    16. }
    17. }
    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!