Kotlin으로 안드로이드 앱개발하는 프로젝트를 하고 있다.
앱개발이 처음이라 공부하는겸 간단한 로그인 회원가입 화면을 만들기로 했다.
activity와 fragment 의 존재를 알게 되었고, fragment의 개념을 이해해 놓으면 추후 앱 개발을 할 때 도움이 될 것 같아서 조사를 조금 해봤다.
참고자료
Fragment는 다음과 같은 성질을 가진다.
- User와 상호작용하는 코드를 포함한다.
- 자신의 생명주기를 가진다.
- Activity에 의해 host된다.
Fragment를 사용할 때 얻을 수 있는 이점
- 여러개의 Activity에서 코드중복없이 재사용 될 수 있다.
- Activity에 추가 제거가 용이하다.
- fragment UI가 Activity UI안에 결합되어서 Activity를 떠나지 않고 유저와 fragment UI를 통해 상호작용을 할 수 있다.
- 가로세로 전환등의 설정변경이 있어도 그 인스턴스를 유지할 수 있다. fragment가 자신만의 생명주기를 갖기 때문에.
- 특정 세션의 레이아웃을 다양한 화면사이즈에서 잘 표현할 수 있다.
예시
왼쪽의 그림과 같이 어떤 엑티비티(1) 위에 버튼이 있고 그 버튼을 눌렀을 때(2) 캘린더 프레그먼트가 화면에 활성화(3)된다고 하자. 해당 예시에서는 DialogFragment를 사용했다.
캘린더를 통해 날짜 선택등의 유저의 input을 받는 등의 상호작용을 할 수 있고, 이는 자체 생명주기를 가진다. 프레그먼트 재사용이라고 하면, 다양한 액티비티에서 캘린더 기능을 넣고 싶을 때 캘린더 코드를 계속 반복해서 넣어주는 것이 아니라 캘린더 프레그먼트 호출을 해줌으로서 코드 중복을 예방하는 것을 의미하는 것 같다.
위에서 Fragment 사용시 얻을 수 있는 이점 중에 Activity UI에 결합되어서 유저와 상호작용을 할 수 있다는 부분이 있었다. 이 예시에서 그것을 확인할 수 있다. OPEN 버튼 클릭시 상단에 선호도여부를 묻는 노란색 띠의 UI가 추가되고 유저로부터 input을 받을 수 있다.
***위의 Dialogfragment는 어떻게 구현할 지 대충 감이 잡혔는데, 이 예시는 Activity위에 fragment UI가 올라가는 것이 정확히 어떻게 구현하는지, 그냥 위에 올리면 되는지 잘 모르겠다. 한번 직접 해보면 알 수 있을 것 같다.
왼쪽의 사진의 환경설정처럼 카테고리별로 세부사항을 조회하는 경우가 있다고 하자. 이때 fragment에서는 왼쪽 첫번째화면의 Settings 가 master이고 General 부분이 detail로 구분이 된다. 따라서 아이패드같이 큰 디스플레이에서 조회될 때 단순히 화면이 크게 보이는 것이 아니라, master부분은 왼쪽에 detail부분은 오른쪽에 배치된다. 패드 뿐만 아니라 갤럭시 폴드 등 화면 크기가 다양한 환경에서 안드로이드 앱이 사용된다. 이러한 현실상황을 고려했을 때 fragment를 잘 활용하는 것이 바람직하다고 여겨진다.
Fragment의 개념적인 측면을 살펴봤다.
다음 번에는 리소스적인 측면에서 한번 알아보겠다.
***
생명주기
'Programming > Android' 카테고리의 다른 글
[네이버 길찾기 API] Direction 5 API with Kotlin, Retrofit2 (11) | 2020.11.20 |
---|---|
[안드로이드] 카카오맵 API UnsatisfiedLinkError (0) | 2020.11.09 |
[MVVM] 데이터 바인딩 data-binding (Activity, fragment) (0) | 2020.11.03 |
[Kotlin] 안드로이드 키해시 값 얻는 두가지 방법 (0) | 2020.11.02 |
댓글