-
Notifications
You must be signed in to change notification settings - Fork 0
2. Project Structure
Deviewsched는 안드로이드 프로젝트로서 꽤나 유명한 오픈소스 안드로이드 클라이언트 프로젝트(pokethub / iosched)와 비슷한 구조의 패키지를 구성하였습니다.
각 주요한 기능별로 ui
디렉토리 하위에 패키지를 생성하고 해당 패키지와 관련있는 기능이 담긴 View/Controller코드를 포함하는 구조입니다.
다만 Model 클래스는 별도의 model
패키지에서 관리하며 해당 model
패키지에서 각 Model들을 분류하여 관리합니다.
예를들어 sessiononfo
와 관련한 model 클래스들이 분류되어있는것을 확인 할 수 있습니다.
그리고 현재 helper
와 util
패키지의 구분이 모호하지만, 이 부분에 대해서는 점차 프로젝트를 개발해나가면서 명확히 구분을 지어나갈 예정입니다. 현재 helper
와 util
패키지 하위에는 Deviewsched에 부분적으로 필요한 기능들에 대하여 클래스를 분리하고 구현해놓은 것들에 대하여 관리하고 있는 상태입니다.
Deviewsched는 기존의 전통적인 안드로이드 프로젝트와는 다르게 최대한 이미지 리소스의 용량 부담을 줄이고, 유연한 이미지 아이콘 리소스 관리를 위해 VectorDrawable을 활용하고 있습니다. 기존의 안드로이드 프로젝트들은 각 기기별 dpi에 따라 다른 size의 이미지들을 사용하는것으로 이미지 리소스를 관리하지만, 이 프로젝트에서는 Android Studio에 최근에 내장된 VectorDrawable을 drawable
디렉토리에 xml형태로 이미지 리소스를 관리합니다.
하지만 모든 이미지 리소스를 VectorDrawable형태로 사용가능한 것은 아닙니다. 일단 Google에서 제공하는 Material Icon에 해당하는 이미지들을 VectorDrawable로 활용하고있으며, VectorDrawable을 활용 할 수 없는 이미지에대해서는 기존과 같은 방식으로 이미지를 관리하고 있습니다.
layout에서는 전통적으로 안드로이드의 뷰를 xml로 구성한 layout 파일들이 위치하며, 본 layout을 작성하기전에 꼭 Codingstyle 문서를 참조하여 알맞은 layout 이름을 네이밍 합시다.
layout-sw720dp는 몇몇 layout에 대해서 Tablet에 최적화된 layout을 제공하기위해 만들어진 디렉토리입니다. 세션목록과 세션의 DetailInfo를 살펴보는 레이아웃을 작성하고 관리하는 중입니다.
menu는 안드로이드 제공하는 menu항목이나, NavigationView
를 구성하기위한 menu를 담고있습니다.
mipmap-* 는 애플리케이션 아이콘을 담기위한 디렉토리입니다. 안드로이드에서는 애플리케이션의 아이콘을 mipmap형태로 제공하는것을 공식적으로 권하고 있습니다.
values / values-ko는 안드로이드 애플리케이션에 필요한 dimen
/ string
/ theme
/ style
/ color
등과 관련한 리소스들을 모아놓은 디렉토리입니다. 현재 Deviewsched는 strings.xml
을 통해 애플리케이션에서 영문과 한글을 지원하고있지만, 차후 일어에 대해서도 지원할 예정입니다.
dimen에는 프로젝트에서 자주 사용되는 dp 상수값이나, keyline에 대한 dp값이 재사용되기쉽게 저장되어있으며, theme
와 style
에는 애플리케이션의 일관적인 ui를 유연하고 확장성있게 구성하기위한 항목입니다. 본 프로젝트에서도 유용하게 사용중입니다.
다만 theme
와 style
에 대한 차이점에대해서 명확히 알고 사용하는 것이 중요합니다.
color
에 대한 설명은 생략하도록 하겠습니다.
마지막으로 xml은 설정 UI를 위한 PreferenceFragmentCompat
을 구현하기위해 preference.xml
이 있습니다.
본 xml
을 통해 간편하고 통일감있는 Setting UI를 구현 할 수 있습니다.
Deviewsched는 안드로이드의 권장에 따라 Activity
와 Fragment
를 적극적으로 활용하고 있습니다.
본 애플리케이션의 MainActivity
는 Deview의 메인 UI영역과 NavigationView
에 대한 컨트롤러를 담당하고 있습니다.
NavigationView
를 통해 각기 다른 액티비티로 이동하며, 전체스케줄과 나의 스케줄 보기 Activity에서는 Activity위에 Fragment를 활용하여 태블릿 디바이스에서 더 적절하게, 보기쉽도록 UI를 구성하였습니다.
UI개발을 진행하면서 태블릿에 맞춰 최적화해야할 부분과 UI의 재사용이 필요한 영역에 대해서는 최우선적으로 Fragment를 활용하고, 그러한 부분이 요구되지 않는 부분에 대해서는 Activity만을 활용하여 UI를 구성해나갈 예정입니다.