Citat:
Ursprungligen postat av
Knarkad
Det jag skulle vilja få till är en liten "animation" där den snabbt bläddrar igenom alla värden i arrayen och sedan slumpmässigt stannar. Tänk dig att typ snurra på ett hjul av text. Har försökt att få till det på något fulsätt med for-loop och typ Thread.sleep för att göra varje loop långsammare så man kan se värdet skrivas ut men programmering fungerar tydligen inte så
Väldigt intressant och bra övningsuppgift du valt. En liten som kräver rätt mycket att man tänker rätt med trådning. Tror att programmering fungerar så som du trodde först och att du inte har tänkt så fel rent logiskt. Jag tycker dock det saknas många andra delar i din kod för tillfället i förhållande till hur du beskriver ditt problem.
- Du behöver bestämma ungefär hur länge du vill att den ska snurra och ett sätt att generera tider mellan dina sleeps. En hårdkodad array med siffror kanske duger eller kanske en snygg funktion, t.ex. fibonacci-serien skulle fungera.
- Du behöver något sätt att "padda" din snurr så att den hamnar på ett slumpmässigt värde. Jag tolkar din uppgift som endast visuell och att det i början av snurren går väldigt fort. Därför skulle jag snabbt hoppa till ett visst värde i arrayen och sedan köra samma snurr varje gång. Då borde alla värden ha samma stor chans att dyka upp, ingen borde märka något och det borde bli lättare att koda än att snyggt försöka ändra snurren beroende på hur långt du ska. Behöver snurren vara "korrekt" så att säga, så är det bara att ta fram räknestickan, rutat block, stiftpenna och köra lite gammaldags, hederlig matematik.
- Du behöver en tråd som sköter snurren så att inte appen hänger. Man får inte göra Thread.sleep() på main-tråden på Android.
- Eftersom du på grund föregående påstående nu har skapat en bakgrundstråd behöver du posta TextView-uppdateringen på main-tråden efter din sleep. Detta är också android-specifikt.
- Du behöver en Boolean(japp, med stort B) som säger om det är möjligt att snurra för tillfället. Du behöver använda synchronized på den och ändra dess värde på väl valda ställen.
Borde inte bli så många rader när du är klar men jag har förmodligen glömt något. Lycka till!