2013-04-30, 00:22
  #1
Medlem
skinkelvinkels avatar
Jag håller på med en android app som ska slumpa fram ett nummer i en textview men när man klickar på nytt nummer så vill jag att den ska visa 5 random nummer på ca 800 millisekunder i samma textview med typ setText() metoden för att sedan stanna vid den sista siffran.

Vet inte hur jag ska förklara men som att random siffor flashar förbi och sedan stannar vid ett sista.

Jag har försökt med loopar och thread.sleep()... någon som kan hjälpa mig?
Citera
2013-04-30, 00:29
  #2
Medlem
går väl att skapa/döda trådar i en loop?
show randomnr 1.
threadsleep(200)
settext("")
killthread(this)
sedan skapa nytt randomnummer och exekvera i en nyskapad tråd.
underlättar kanske ifall du sparar undan randomnr i en Array och displayar index 0-4 om du får det knepigt med den loopen.

var längesen jag höll på med paralella trådar så smäll mig på fingrarna om jag är ute och cyklar
Citera
2013-04-30, 00:54
  #3
Medlem
skinkelvinkels avatar
Jag löste det genom att skapa en funktion som innehåller massa olika timers med olika delay.

Kod:
public void getNumbers(){
		
		number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 200);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 300);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 400);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 500);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 600);
		
		
	}

sedan kallade jag bara på metoden när man klickar på nytt nummer.
Citera
2013-05-01, 19:45
  #4
Medlem
frellis avatar
Citat:
Ursprungligen postat av skinkelvinkel
Jag löste det genom att skapa en funktion som innehåller massa olika timers med olika delay.

Kod:
public void getNumbers(){
		
		number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 200);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 300);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 400);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 500);

number.postDelayed(new Runnable() {

		    public void run() {
		    	getSomeNumber = 1+randomNumbs.nextInt(10);
				String displayNumber = Integer.toString(someNumber);
				number.setText(displayNumber);
		    }

		}, 600);
		
		
	}

sedan kallade jag bara på metoden när man klickar på nytt nummer.
Det var ingen fin lösning. Lägg ihop det till en loop istället. Redundant kod är inte att eftersträva.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in