Skip to content

Conversation

@stopstone
Copy link
Contributor

작업 내용

  • HorizontalPager를 활용하여 뷰페이저를 구현하고 온보딩 화면 제작
  • 각 온보딩 화면에 맞는 이미지를 drawable-mdpi, drawable-hdpi, drawable-xhdpi,drawable-xxhdpi,drawable-xxxhdpi로 관리
  • 최초 접속시에만 온보딩 페이지를 보여줄 수 있도록 DataStore로 상태 저장
  • 백그라운드 컴포저블 UI 구현

확인 방법

  • feature/onboarding, data/repository/OnboardingRepository에서 확인하실 수 있습니다.

참고 사항

  • 온보딩 화면에 들어가는 이미지 5개를 drawable에 저장하여 추가 리소스가 많습니다..
  • 온보딩 화면 백그라운드를 직접 구현하였는데, 추후 이미지파일을 받을 수 있다면 수정하겠습니다.
  • 최초접속 저장은 "로그인/회원가입" 버튼을 클릭할 때 저장하도록 하였습니다.
  • 최초접속 확인은 앱 스플래시에서 체크하겠습니다.
  • ViewModel에서 바로 DataStore를 주입받도록 하였는데, 다른 기능들과 일관성을 위해 레퍼지토리에서 받도록 리팩토링 하였습니다
1~4페이지 마지막 페이지

관련 이슈

rhkrwngud445 and others added 30 commits August 24, 2025 17:56
- 각 컴포넌트를 조합하여 온보딩 화면을 구현하였습니다.

- createAnnotatedText() 함수를 통해 \n 이후 텍스트를 강조합니다.

- stringResource를 통해 페이지 별 타이틀을 string.xml에서 가져옵니다.
OnboardingScreen의 UI 레이아웃을 수정하여 상태바와 네비게이션 바 영역을 고려하도록 변경했습니다.
`systemBarsPadding()` 대신 `WindowInsets`를 사용하여 직접 패딩을 계산하고 적용했습니다.
온보딩 완료 상태를 저장하고 조회하는 `OnboardingPreferences` 클래스를 추가했습니다.
이를 통해 앱 최초 실행 시 온보딩 화면 표시 여부를 결정할 수 있습니다.
- 온보딩 버튼에 로딩 상태를 추가했습니다.
- 로딩 중일 때는 버튼이 비활성화됩니다.
- OnboardingViewModel에 UiState 및 Effect 추가
- OnboardingScreen에서 UiState 관찰 및 Effect 처리 로직 구현
- 온보딩 완료 시 로딩 상태 표시 및 에러 처리 추가
- 온보딩 완료 여부 저장 및 조회 기능을 위한 `OnBoardingRepository` 인터페이스와 `OnBoardingRepositoryImpl` 구현체를 추가했습니다.
- `OnboardingViewModel`이 `OnboardingPreferences` 대신 `OnBoardingRepository`를 사용하도록 수정했습니다.
- `RepositoryModule`에 `OnBoardingRepository` 관련 의존성 주입 설정을 추가했습니다.
- `title` 필드를 `String`에서 `@StringRes` 어노테이션을 사용하는 `Int` 타입의 `titleResId`로 변경했습니다.
- 이에 따라 `OnboardingScreen`에서 `title`을 참조하는 부분을 `stringResource`를 사용하도록 수정했습니다.
- MainViewModel에 onBoardingRepository를 주입하여 온보딩 완료 여부를 확인합니다.
- MainActivity, NearApp, NearNavHost에서 로그인 상태(isLoggedIn) 대신 시작 화면(startDestination)을 사용하도록 수정했습니다.
- MainUiState에 isOnboardingCompleted와 startDestination 필드를 추가했습니다.
- 앱 시작 시 온보딩 완료 여부와 로그인 상태를 확인하여 적절한 화면(온보딩, 홈, 로그인)으로 이동하도록 MainViewModel의 checkAppStatus 로직을 수정했습니다.
- TODO  각 루트의 타입이 다르기에 Any로 설정하였습니다. 나중에 하나의 루트로 두면 좋을 것 같습니다
…/onboarding-pages

# Conflicts:
#	Near/app/src/main/java/com/alarmy/near/presentation/feature/main/NearNavHost.kt
- values/strings.xml에서 중복된 온보딩 관련 문자열 리소스를 삭제했습니다.
@stopstone stopstone merged commit c389154 into dev Sep 19, 2025
1 check passed
@stopstone stopstone deleted the feat/onboarding-pages branch September 19, 2025 09:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 인트로

3 participants