| 항목 | 내용 |
|---|---|
| 프로젝트명 | MyToday |
| 설명 | 날씨 오픈 API를 활용해 날씨 정보를 보여주는 안드로이드 플래너 앱 |
| 플랫폼 | Android |
| 언어 | Java |
| IDE | Android Studio |
| 최소 SDK | API 16 (Android 4.1 Jelly Bean) |
| 타겟 SDK | API 29 (Android 10) |
| 버전 | 1.0 |
| 개발 기간 | 2020.12 |
| 개발 인원 | 1인 |
날씨 정보 조회 (OpenWeatherMap API)
OpenWeatherMap의 5일 예보 REST API(/data/2.5/forecast)를 HTTP로 호출하고, 응답으로 받은 XML 데이터를 XmlPullParser로 파싱하여 날짜별 날씨 정보(날씨 코드, 아이콘, 최저·최고 기온 등)를 ContentValues로 가공합니다. 네트워크 작업은 Thread를 상속한 별도 클래스(Weather_xml_to_android)에서 비동기로 처리하고, 완료 후 Handler를 통해 UI 업데이트를 수행합니다.
ViewPager + Fragment 기반 화면 구성
StartActivity에서 ViewPager와 커스텀 FragmentPagerAdapter(MyPagerAdapter)를 사용하여 플래너의 주요 화면(오늘 할일·메모·D-Day 등)을 Fragment(Fragment_1~3)로 분리해 슬라이드 형태로 구성합니다. 페이지 위치 표시를 위해 CircleIndicator 라이브러리를 적용합니다.
할일(Plan) 및 D-Day 관리
SharedPreferences를 활용하여 할일 데이터를 로컬에 저장·불러옵니다. RecyclerView와 각 항목별 커스텀 어댑터(RecyclerAdapter_plan, RecyclerAdapter_dday 등)로 리스트를 표시하며, 팝업 액티비티(PopupActivity_plan, PopupActivity_dday)를 통해 추가·수정·삭제·미루기 기능을 제공합니다.
위치 기반 날씨 설정
PopupActivity_location에서 사용자가 직접 위경도 또는 지역을 입력하면 해당 좌표 기반으로 날씨 API를 조회합니다. 설정값은 SharedPreferences에 저장하여 앱 재실행 시에도 유지됩니다.
스플래시 화면 및 전체 화면 모드
앱 진입 시 Splash 액티비티가 표시되며, StartActivity에서는 상태바를 숨기는 전체 화면 모드(FLAG_FULLSCREEN)를 적용하여 몰입형 UI를 구성합니다.
- OpenWeatherMap
/data/2.5/forecastAPI를 호출해 5일간 3시간 단위의 날씨 데이터를 XML 형식으로 수신 XmlPullParser를 이용해<time>,<symbol>,<temperature>등 태그를 파싱하여 날씨 정보를ContentValues로 구조화Thread를 상속한Weather_xml_to_android클래스에서 네트워크 작업을 수행하고,Handler로 메인 스레드에 결과 전달IconMatch클래스에서 날씨 코드 번호에 따라 아이콘 리소스를 매핑하고,Weather_to_hangeul에서 날씨 상태명을 한글로 변환ViewPager+FragmentPagerAdapter조합으로 화면을 Fragment 단위로 분리하고CircleIndicator로 페이지 위치 표시RecyclerView와 커스텀 어댑터를 기능별(일반 플랜·오늘 플랜·D-Day·메모)로 분리하여 독립적으로 관리PopupActivity계열 액티비티를 팝업 형태로 구성하여 항목 추가·수정·삭제·미루기 UI를 제공SharedPreferences를 사용하여 할일, 메모, D-Day, 위치 정보 등 모든 데이터를 로컬에 영구 저장AndroidManifest.xml에INTERNET,ACCESS_NETWORK_STATE,VIBRATE, 외부 저장소 권한을 선언하여 날씨 API 통신 및 앱 기능 허용- 앱 시작 시 스플래시 화면을 표시하고, 메인 화면에서
FLAG_FULLSCREEN으로 상태바를 숨겨 전체 화면 UI 구현


