ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Compose 학습 - 1 (TextView & Slider)
    책 내용 정리/핵심만 골라 배우는 젯팩컴포즈 2024. 11. 23. 21:18

    Chapter  3

    class MainActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContent {
                ComposeStudyTheme {
                    // A surface container using the 'background' color from the theme
                    Surface(
                        modifier = Modifier.fillMaxSize(),
                        color = MaterialTheme.colorScheme.background
                    ) {
                        DemoScreen()
                    }
                }
            }
        }
    }

     

     

    • ComposeStudyTheme는 Activity에서 사용할 색상, 글꼴, 모양을 정의하고 앱 사용자 인터페이스의 전체 테마를 커스머마이즈할 수 있는 중심 영역
    • Surface : 배경을 어떻게 채울지 결정

    TextView

     

    @Composable
    fun DemoText(message: String, fontSize: Float) {
        Text(
            text = message,
            fontSize = fontSize.sp,
            fontWeight = FontWeight.Bold
        )
    }
    
    • @Composable annotation을 이용해 컴포저블로 표시된다. 
    @Preview(showBackground = true)
    @Composable
    fun DemoTextPreview() {
        DemoText(message = "Welcome to Android", fontSize = 12f)
    }
    • @Preview : 미리보기를 지원

    Chapter 4

    @Composable
    fun DemoSlider(sliderPositions: Float, onPositionChange: (Float) -> Unit) {
        Slider(
            modifier = Modifier.padding(10.dp),
            valueRange = 20f..40f,
            value = sliderPositions,
            onValueChange = { onPositionChange(it) }
        )
    }
    @Composable
    fun DemoScreen() {
        var sliderPosition by remember { mutableStateOf(20f) }
        val handlePositionChange = { position: Float -> sliderPosition = position }
    
        Column(
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
            modifier = Modifier.fillMaxSize()
        ) {
            DemoText(message = "Welcome to Android", fontSize = 12f)
    
            Spacer(modifier = Modifier.height(150.dp))
    
            DemoSlider(
                sliderPositions = sliderPosition,
                onPositionChange = handlePositionChange
            )
            
            Text(
                style = MaterialTheme.typography.headlineLarge,
                text = sliderPosition.toInt().toString() + "sp"
            )
        }
    }

     

    • Compose 런타임 시스템은 데이터 변경을 감지하고 사용자 인터페이스를 재구성한다. 그렇게 된다면 sliderPosition이 20으로 계속 초기화 되기 때문에 by remember을 통해 값을 기억하게 해준다.

     

    결과 스크린샷 :

Designed by Tistory.