Android Studio - https://developer.android.com/studio/archive
(1) Utwórz projekt Phone and Tablet / Empty Activity
(2) Pozostaw tylko klasę MainActivity i metodę setContent.
W metodzie setContent wstaw kilka elementów interfejsu graficznego.
setContent { Column{ Text(text = "3") Button(onClick = { }) { Text(text = "7") } } }
(3) Utwórz odpowiednią funkcję @Composable.
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { F() } } @Composable fun F() { Column{ Text(text = "3") Button(onClick = { }) { Text(text = "7") } } } }
(4) Wykorzystując poniższy szkielet MainActivity, napisz pełną implementację logiki kalkulatora (pozostałe działania, kropkę dziesiętną, pamięć, funkcje trygonometryczne i logarytmy).
package com.tango.nuevo.app01 import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableIntState import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Calc() } } @Composable fun Calc(){ val s: MutableState<String> = remember{mutableStateOf("0")} val op: MutableState<Char> = remember{mutableStateOf('+')} val buf: MutableIntState = remember{mutableIntStateOf(0)} Column( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ){ Row{ Text( modifier = Modifier.fillMaxWidth(0.5f), text = s.value, fontSize = 20.sp ) } Row{ Button(onClick = { if (s.value == "0") s.value = "1" else s.value += "1" }) { Text(text = "1") } Button(onClick = {if(s.value == "0") s.value="2" else s.value+="2"}) { Text( text="2" ) } Button(onClick = {if(s.value == "0") s.value="3" else s.value+="3"}) { Text( text="3" ) } Button(onClick = {op.value='+'; buf.intValue = s.value.toInt(); s.value="0"}) { Text( text="+" ) } } Row{ Button(onClick = {if(s.value == "0") s.value="3" else s.value+="4"}) { Text( text="4" ) } Button(onClick = {}) { Text( text="" ) } Button(onClick = {}) { Text( text="" ) } Button(onClick = {}) { Text( text="" ) } } Row{ Button(onClick = {if(s.value == "0") s.value="7" else s.value+="7"}) { Text( text="7" ) } Button(onClick = {}) { Text( text="" ) } Button(onClick = {}) { Text( text="" ) } Button(onClick = {}) { Text( text="" ) } } Row{ Button(onClick = {s.value="0" }) { Text( text="C" ) } Button( onClick = {buf.intValue += s.value.toInt(); s.value = buf.intValue.toString()}, modifier = Modifier.fillMaxWidth(0.5f) ) { Text( text="=" ) } } } } }