-
Notifications
You must be signed in to change notification settings - Fork 0
feat: 상세 화면 UI 구성 및 레이아웃 설계 #20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
네트워크 통신을 위해 `AndroidManifest.xml` 파일에 `INTERNET` 권한을 추가했습니다.
app/build.gradle.kts 파일에서 Coil 의존성 선언 후 불필요한 공백 라인을 제거했습니다.
애플리케이션에 사용될 다양한 아이콘들을 추가했습니다. 추가된 아이콘들은 다음과 같습니다: - 에어컨 (ac_unit) - 바람 (air) - 구름 (cloud) - 나침반 (explore) - 알갱이 (grain) - 달 (nights_stay) - 비 (rainy) - 가시성 (visibility) - 물방울 (water_drop) - 황혼 (wb_twilight)
날씨 상세 화면에 필요한 다음 문자열 리소스들을 추가했습니다: - 뒤로가기 - 시간대별 예보 - 상세 정보 - 강수 확률 - 습도 - 풍속 - 가시거리 - 구름량 - 풍향 - 일출 - 일몰 - 강수량 (3시간) - 적설량 (3시간) 위 문자열들은 기본(영어) 및 한국어 리소스에 모두 추가되었습니다.
일기 예보 정보를 담는 `ForecastItem` 데이터 클래스를 추가했습니다. 이 클래스는 시간, 온도, 아이콘 코드를 필드로 가집니다.
날씨 상세 정보를 표시하는 화면을 구현하고, ViewModel과 연결하여 더미 데이터를 표시하도록 구성했습니다. - `WeatherDetailScreen.kt`: 상세 화면 UI 구성, NavController를 통해 뒤로가기 기능 추가 - `WeatherDetailViewModel.kt`: 상세 화면에서 사용할 ViewModel 생성 및 더미 데이터 로드 로직 추가 - `WeatherDetail.kt`: 상세 날씨 정보 데이터 클래스 정의 - `SimpleWeatherNavHost.kt`: 상세 화면으로 이동 시 NavController 전달하도록 수정
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds comprehensive weather detail functionality to the weather application, including a new detail screen with extensive weather information display, supporting data models, and weather-specific drawable resources.
- New WeatherDetailScreen implementation with current weather and hourly forecast display
- New data models (
WeatherDetail
andForecastItem
) for structured weather data - Addition of weather-related drawable icons and localized string resources
Reviewed Changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.
Show a summary per file
File | Description |
---|---|
WeatherDetailScreen.kt | Implements complete weather detail UI with current conditions and hourly forecast |
WeatherDetailViewModel.kt | Provides mock weather data and state management for detail screen |
WeatherDetail.kt & ForecastItem.kt | Define data structures for weather information |
Drawable XML files | Add weather-specific vector icons (rain, wind, cloud, etc.) |
String resources | Add localized strings for weather detail labels in English and Korean |
SimpleWeatherNavHost.kt | Update navigation to pass NavController to detail screen |
AndroidManifest.xml | Add INTERNET permission for weather data fetching |
Comments suppressed due to low confidence (1)
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailViewModel.kt:25
- The
loadWeather()
function contains hardcoded mock data. This behavior should be covered by unit tests to ensure the ViewModel properly handles data loading and state updates.
_weather.value = WeatherDetail(
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
Show resolved
Hide resolved
- `WEATHER_ICON_BASE_URL` 및 `directions` 상수를 파일 최상단으로 이동하여 가독성 향상 - `weather` 객체가 null일 경우를 처리하는 `if-else` 문을 `let`과 `run`을 사용하여 간결하게 수정 - `degToCompass` 함수 내 `directions` 리스트를 파일 최상단 상수로 대체
- 날씨 상세 화면에 체감 온도를 표시하도록 UI를 업데이트했습니다. - "Feels like" 문자열을 `strings.xml`에 추가하여 다국어 지원 및 코드 가독성을 향상시켰습니다. - 한국어 환경을 위해 `values-ko/strings.xml`에도 "체감온도" 문자열을 추가했습니다.
- `WeatherUiState` sealed class를 도입하여 로딩, 성공, 에러 상태를 명확하게 관리합니다. - `WeatherDetailViewModel`에서 `StateFlow`를 사용하여 UI 상태를 노출하고, 더미 데이터 로드 시 성공 또는 에러 상태를 발행합니다. - `WeatherDetailScreen`에서 `WeatherUiState`를 관찰하여 각 상태에 따라 적절한 UI(로딩 인디케이터, 날씨 정보, 에러 메시지)를 표시하도록 수정합니다.
데이터 클래스 `WeatherDetail`, `ForecastItem`, `WeatherItem`의 마지막 필드 뒤에 쉼표를 추가하여 코드 스타일을 일관성 있게 변경했습니다.
날씨 데이터를 불러오는 데 실패했을 때 발생하는 예외 처리 로직에서 사용되지 않는 예외 변수명을 `_`로 변경하여 코드 가독성을 향상시켰습니다.
|
이 Pull Request는 날씨 애플리케이션의 기능 확장, UI 개선, 백엔드 데이터 처리 강화를 포함한 주요 업데이트를 도입합니다. 핵심 변경 사항은 날씨 상세 화면의 추가, 새로운 데이터 모델 도입, 날씨 아이콘용 드로어블 리소스 추가입니다. 아래는 주요 변경 사항에 대한 세부 설명입니다:
기능 향상
날씨 상세 화면:
WeatherDetailScreen
이 새롭게 디자인되어, 온도, 습도, 풍속, 시간대별 예보 등 상세 날씨 정보를 포함하도록 개선되었습니다. 이제NavController
를 이용한 내비게이션과WeatherDetailViewModel
을 통한 데이터 연동이 지원됩니다.(
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailScreen.kt
)날씨 상세 ViewModel: 현재 날씨 및 시간대별 예보 데이터를 관리하는
WeatherDetailViewModel
을 추가하였습니다.(
app/src/main/java/com/ben/simpleweather/features/detail/WeatherDetailViewModel.kt
)다음은 새롭게 구현된 상세 화면의 예시입니다:
데이터 모델
ForecastItem
과WeatherDetail
데이터 클래스를 도입하였습니다.(
app/src/main/java/com/ben/simpleweather/data/ForecastItem.kt
,app/src/main/java/com/ben/simpleweather/data/WeatherDetail.kt
)[1] [2]
UI 개선
(
app/src/main/res/drawable/outline_ac_unit_24.xml
,app/src/main/res/drawable/outline_air_24.xml
,app/src/main/res/drawable/outline_cloud_24.xml
,app/src/main/res/drawable/outline_explore_24.xml
,app/src/main/res/drawable/outline_grain_24.xml
,app/src/main/res/drawable/outline_nights_stay_24.xml
)[1] [2] [3] [4] [5] [6]
코드베이스 업데이트
WeatherDetailScreen
으로NavController
를 전달할 수 있도록SimpleWeatherNavHost
를 수정하였습니다.(
app/src/main/java/com/ben/simpleweather/SimpleWeatherNavHost.kt
)AndroidManifest.xml
에INTERNET
권한을 추가하였습니다.(
app/src/main/AndroidManifest.xml
)이번 변경을 통해 사용자 경험을 향상시키고, 상세한 날씨 정보 제공과 시각적 개선, 구조적 확장 가능성을 확보하였습니다.
closes #4