2016-04-17 3 views
0

Ich habe das folgende Problem: Ich habe ein Bild in meiner App und die Position soll dynamisch ändern. Der folgende Code funktioniert bereits:Warten nach setPadding() in Android

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 

image.setLayoutParams(layoutParams); 
image.setPadding(startX, startY, 0, 0); 
image.setVisibility(View.VISIBLE); 

for (int i=0; i<10; i++) { 
    startX+=10; 
    image.setPadding(startX, startY, 0, 0); 

    try { 
     Thread.sleep(1000); 
    } 
    catch(InterruptedException e){ 
     e.printStackTrace(); 
    } 
} 

Das Problem ist, dass die Bildposition sofort in die Endposition geändert wird, so dass ich hinzugefügt, um die Thread.sleep Linien. Jetzt schläft der Thread für 10x 3s und dann wechselt das Bild zur endgültigen Position. Ich habe es auch in einem neuen Thread versucht, der nicht so gut funktioniert hat.

Irgendwelche Gedanken darüber, wie ich mein Ziel erreichen könnte? Ich freue mich für jede Lösung oder Eingabe.

+0

Siehe https://help.github.com/articles/basic-writing-and-formatting-syntax/ für das Formatieren von Code. – totoro

Antwort

0

Sie eine Kombination aus Handler und Runnable verwenden könnte dieses Verhalten zu erreichen:

Schritt 1: definieren Sie Ihre Handler und Runnable

Handler handler = new Handler(); 
Runnable refreshRunnable = new Runnable() { 
        @Override 
        public void run() { 
         refreshView(); 
        } 
       } 

Schritt 2: Hier ist Ihre refreshView Funktion:

private void refreshView() { 
    count ++; //Variable initialized at 0 in your class 
    if (count < 10) { 
    startX += 10; 
    dotGreen.setPadding(startX, startY, 0, 0); 
    dotGreen.invalidate(); 
    handler.postDelayed(refreshRunnable, 1000); 
    } 
} 
+0

Hmm, ich bekomme "kann nicht finden, dass Symbolvariable in der Zeile ausführbar ist" handler.postDelayed (runnable, 1000); " – PhysX

Verwandte Themen