- Navigation component를 이용해 온보딩 화면에 들어갈 각 프래그먼트를 OnBoarding Activity에 띄워주었다.
- 라이브러리를 추가하고, Navigation graph를 만들고, OnBoarding Activity를 NavHostFragment로 지정하고, 화면에 나타날 프래그먼트를 생성하고, Navigation graph에 작업을 명세하고, 코드단에서 각 프래그먼트 전환 로직을 추가해주었다.
- 그리고 마지막 온보딩 화면 후, 로그인 화면으로 이동해야 하기 때문에 Navigation graph에 SignInActivity도 추가해 마지막 온보딩 프래그먼트에서 SignInActivity로 전환되는 action도 만들어주었다.
-
SharedPreferences를 object로 구현해주어 사용하기 쉽게 만들어주었다.
object AutoLoginSharedPreferences { private const val STORAGE_KEY = "USER_AUTH" private const val AUTO_LOGIN = "AUTO_LOGIN" fun getAutoLoginSharedPreferences(context: Context): SharedPreferences { return context.getSharedPreferences(STORAGE_KEY, Context.MODE_PRIVATE) } fun getAutoLogin(context: Context): Boolean = getAutoLoginSharedPreferences(context).getBoolean( AUTO_LOGIN, false ) fun setAutoLogin(context: Context, value: Boolean) { getAutoLoginSharedPreferences(context) .edit() .putBoolean(AUTO_LOGIN, value) .apply() } fun removeAutoLogin(context: Context) { getAutoLoginSharedPreferences(context) .edit() .remove(AUTO_LOGIN) .apply() } fun clearAutoLogin(context: Context) { getAutoLoginSharedPreferences(context) .edit() .clear() .apply() } }
getAutoLoginSharedPreferences()
메서드를 구현해줌으로써 보일러 플레이트 코드를 완화해주었다.
- util class란 쉽게 말하자면 프로젝트 내부에서 자주 사용하는 함수들을 static하게 선언해서 모든 클래스에서 접근할 수 있게 모아둔 클래스이다.
- 아직까지 Util class에서 사용하는 코드는 없다.
-
세미나에서 배운 것과 동일한 방식으로 패키징을 진행했다.
-
data
- local - 로컬 데이터 로직과 관련된 클래스들을 모아둠
- remote - 서버 데이터 로직
-
ui - activity나 fragment와 같이 화면을 구성하는 클래스를 모아둠
- adapter - 각종 어뎁터를 모아 놓음
-
util - util 클래스나 확장함수
-
fragment에서 activity로 화면 전환을 할 때
startActivity(Intent(context, SettingActivity::class.java))
를 사용한다.