• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

Jetpack Compose의 화면구성

24.03.08 18:25 작성 24.03.08 18:28 수정 조회수 160

1

안녕하세요 좋은 강의 잘 듣고 있습니다.

강의를 수강하다 의문이 생겨 질문을 올립니다.


<질문>

xml만을 이용해서 프로젝트를 해오다가 컴포즈에 관심이 생겨서 시작하게 되었는데 컴포즈의 경우 보통 액티비티를 시작하는 1개만 쓰는 지 궁금합니다.

 

xml방식의 경우에는 화면 이동을 위해서 startActivity같은 걸이용해서 전환을 하기에 새로운 화면이 필요하다면 모든 경우 액티비티를 만들고 그에 맞는 xml을 디자인해왔습니다.

 

그런데 컴포즈는 꼭 액티비티를 사용하지 않고도 메인 액티비티에서 @Composable을 부르고 네비게이션으로 다음 Compose화면으로 넘어가면 굳이 액티비티를 구성하지 않아도 정상적으로 작동이 되더라구요.

 혹시나 그렇다면 UI화면별로 필요한 kt만 만들고 네비게이션으로 이어만 주면 되는건가요?

<질문2>

추가적으로 강사님께서 Box를 쓸 때도 있고 바로 Column을 쓸 때도 있고 Surface를 사용하시는 경우도 있는데 어떨 때 각각을 사용하시는지? 궁금합니다!

 

답변 1

답변을 작성해보세요.

1

안녕하세요 근재님

저도 Jetpack Compose를 도입하면서 들었던 의문 정확히 2개가 맞습니다.

 

  1. 물론 Activity 한개로도 가능합니다.
    저도 여러 설명을 보고 처음에 사용할 때 Activity 1개로 사용을 하고 화면만 Jetpack Compose 위젯으로 처리를 했습니다.


    다만 그렇게 했을 때 ViewModel이 1개로 인한 뷰모델이 비대해지는 문제와


    Activity 라이프라이클에 의한 onRestart OnResume 등에 대한 부분을 처리하기가 까다로워 지더라구요
    물론 할 수는 있지만 조금 귀찮은 느낌이었습니다. Activity 전환 시에 자연스럽게 다음 화면으로 넘어가는 효과도 디자이너분이 요청하셨을 때 액티비티 한개로는 부자연스러운 느낌이 들었던 적도 있구요

    저는 ViewModel 기준으로 한개로 가능한 부분까지 Activity하나로 하고 ViewModel에 로직 분류가 여러개가 필요하면 여러 액티비티로 구성하는게 좋은 것이라 결론내렸는데, 정답은 없는 것이니 근재님이 원하시는 형태로 사용하시면 좋을 것 같습니다.

2. 저는 항목을 나눌 때 Box를 주로 사용하는 편이고
그 안에서 Column Row 등을 이용해서 배치하고 있습니다.
그게 가장 편했던 기억이 있습니다 🙂

좀 더 추가적인 문의사항 있으시면 또 말씀주세요!