Betingelser og løkker i Kotlin – if, when, for, while

Her meget kort vist hvordan betingelser og løkker bruges i Kotlin.

IF-ELSE

// Traditionel brug
var max = a
if (a < b) max = b

// Med else
var max: Int
if (a > b) {
max = a
} else {
max = b
}

// Som udtryk
val max = if (a > b) a else b


WHEN-ELSE

when (x) {
1 -> print(“x == 1”)
2 -> print(“x == 2”)
parseInt(s) -> print(“s encode x”)
is String -> x.startWith(“prefix”)
x.isOdd() -> print(“x er ulige)
x.isEven() -> print(“x er lige)
else -> { // ellers
print(“x er hverken 1 eller 2”)
}
}


FOR

for (item in collection) print(item)

for (i in 1..3) {
println(i)
}
for (i in 6 downTo 0 step 2) {
println(i)
}

for (i in array.indices) {
println(array[i])
}

for ((index, value) in array.withIndex()) {
println(“the element at $index is $value”)
}


WHILE

while (x > 0) {
x–
}

do {
val y = retrieveData()
} while (y != null)


Funktioner i Kotlin

Her et par eksempler på funktioner “fun” i Kotlin. En efektiv måde at strukturere sine programmer på.


fun skrivTekst(tekst: String) {
println(tekst)
}

skrivTekst(“Hallo”)
// Resultat = Hallo


fun skrivMeddelseMedParameternavn(tekst: String, type: String = “Meddelse: “) {
println(“[$type] $tekst”)
}

SkrivMeddelseMedParameternavn(tekst=”Hej med dig. “, type=”Info: ” )
// Resultat = “Info: Hej med dig.”

SkrivMeddelseMedParameternavn(“Hej med dig. “, “Info: ” )
// Resultat = “Info: Hej med dig.”

SkrivMeddelseMedParameternavn(tekst=”Hej med dig.” )
// Resultat = “Meddelse: Hej med dig.”

SkrivMeddelseMedParameternavn(“Hej med dig.” )
// Resultat = “Meddelse: Hej med dig.”


fun plus(x: Int, y: Int): Int {
return x + y
}

println(plus(3,4))
//Resultat = 7


fun gange(x: Int, y: Int) = x * y

println(gange(2, 3))
// Resultat = 6

Input felt, funktioner, variabler og if, if else, else

Vi laver vores første input felt. Laver en funktion som giver et svar tilbage og som indeholder en betingelse som giver det rigtige svar (if – if else – else)

Vi har styr på knapper og felter som vi kan tilføje i designet. Og vi ved hvordan vi kan sende en besked ud på skærmen med Toast.

Teksten er en “Plain Text”, som vi kan bruge som indtastnings felt. Knappen en normal “Button” knap.

Vi tager et kik på tekst feltet, som skal have et ID “tx_tekst”, en tekst og en stor font. Feltet skal også hænges rigtig på plads med “Attributes”.

Læg mærke til ID tx_tekst som skal bruges i programmet.

Også “Layout” er vigtigt. Inde i firkanten er der små streger som kan have 3 tilstande. Den som er markeret med rød viser at feltet trækkes ud til siderne (16) viser at der skal være 16 i afstand til kanten.

I toppen er tekst feltet hængt op med en afstand på (24) til øverste kant.

Indtastnings feltet har nu teksten “Indtast en tekst” og en skrift størrelse på 30.

Knappen er simpel – vi hænger den op øverst (16) i afstand, på vores indtastnings felt og centreret til højre og venstre men en afstand på (150). Kunne også være mindre vigtigt er dog at tallene i højre og venstre side er de samme ellers kommer knappen ikke i midten.

Knappen skal have et ID her “bn_knap” så vi kan bruge den i programmet.

I tager et kik på koden.

Vigtigt er her funktionen “fun test”, “setOnClickListner” til knappen og “Toast” som skriver en tekst på skærmen.

Her ses funktionen “fun test” som har en parameter tekst og giver et svar retur.

Vi kan se en setOnClickListner som venter til vi har trykket på en knap. Og en Toast som tager den tekst vi har tastet ind overfører det til funktionen og skriver svaret ud på skærmen.

Læg også mærke til (var svar:String = “”) som definerer en lokal variabel som bruges til at retunere svaret i vores test funktion.

Kik også på if. Her spørger vi om tekst = “Hej” er det korrekt sættes svar til “Hej med dig” – if (tekst == “Hej”) svar = “Hej med dig”.

Vi spørger på “Hej” og på “Hallo” er teksten en ander for vi svaret tilbage “Hvad?”.

Se hvad der sker i programmet skriv til loggen

Du kan skrive en tekst til loggen så du kan følge med i hvad der sker i til program. Her et lille eksempel. Trykker man på knappen kommer der en meddelse i loggen at knappen er trykket.

Nu har vi mulighed for at se i loggen at knappen bliver trykket.

Trykker man nu på knappen kan men med det samme i loggen se teksten “Du har trykket på knappen”.

I Logcat kan man se at vi har trykket på knappen.

Der står rigtig mange oplysninger i Logcat hvis man øverst søger efter tag: teksten i dette eksempel “Knud” vises kun log beskeder som indeholder “Knud”. Trykker vi nu på knappen på mobilen som er tilsluttet med USB kablet eller på vores virtuelle mobil.

Kan man med det samme i Logcat se at knappen har været trykket.

Det er en god mulig for at fejl finde sit program. Debug tekster vises ikke på skærmen de vises kun i Logcat i program loggen.

Skriv en pop-up tekst på skærmen med Toast

Ønsker du en pop-up tekst på skærmen som vises og forsvinder igen så er Toast en god måde at gøre dette på.

Her et lille eksempel på en pop-up tekst med Toast.

Du skal bruge en import til Toast den tilføjes automatisk ved at trykke Alt+Enter på Toast.

Spil en lyd eller musik

Der skal lid forberedelse til for at spille en lyd eller et stykke musik i appen.

Vi skal have lavet en raw folder. Højre klik på Res, New, Folder, Raw Resources Folder.
Vi har nu en raw folder og her kan vi med kopi og sæt ind tilføje vores lyd her ses “click_on.mp3”.
Vi skal have tilføjet en MediaPlayer som kan spille vores lyd.

Og her var så koden i Kotlin til at spille vores “click_on” lyd.

MediaPlayer.create(this,R.raw.click_on).start()

Tænd og sluk for kamera lyset

Således tændes og slukkes kamera lyset.

Vi skal her først importere kamera funktionen i vores program så vi kan få adgang til lyset.

Tilføj “import android.hardware.camera2.CameraManager” til MainActivity.kt.

Vi skal give appen rettigheder til at kamera lyset.

Rettighed til att bruge kamera lyset tilføjes i AndroidManifest.xml.

For at få adgang til lyset skal vi først åbne det rigtige kamera front kamera er normalt nummer 0. Så tager vi den simple version ser det således ud.

Nu er vi klar til at tænde eller slukke lyset med følgende kode i Kotlin.

camManager.setTorchMode(cameraId, true)
camManager.setTorchMode(cameraId, false)

Frys skærm orientering

Hvorledes låses skærm orienteringen i Kotlin til portræt eller landscape.

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
Sættes koden ind i MainActivity.kt gælder i OnCreate fryses orienteringen i appen.

Således er vi i dette eksempel sikre på at appen vises i portræt og ikke vil skifte til landskabe når telefonen drejes.