모바일 클린아키텍처 - UI

대략 이런 구조, 각 layer 마다 Translater(mapper)w 가 있을 수 있다.

UI 계층의 역할
View (Widget)
화면 표시, 애니메이션, 사용자 입력 등 UI 관련 모든 처리 담당
BuildContext
를 통해 테마, 네비게이션, 미디어 쿼리 등 다양한 UI 정보를 얻음플랫폼 의존적 구현 가능
Platform.isIOS (iOS/Android 별 위젯 분기)
플랫폼의 렌더링 방식(Material vs. Cupertino)에 따라 UI가 다르게 표시
네이티브 코드 MethodChannel 사용
ViewModel (또는 Presenter)
비즈니스 로직과 상태만 관리
View와 완전히 분리되어 테스트 및 재사용 용이
UI 프레임워크나 OS 렌더링 API, BuildContext에 직접 접근하지 않음
여기서, UI 프레임워크란
버튼, 폼, 네비게이션 바 등 다양한 UI 요소와 레이아웃, 스타일, 상호작용 기능을 미리 구현해둔 컴포넌트, 라이브러리, 도구의 집합
## Flutter의 UI 프레임워크에서 제공하는 버튼 컴포넌트를 사용하는 예
ElevatedButton(
onPressed: () {},
child: Text('확인'),
)
OS 렌더링 API(Rendering API) 란
운영체제(OS)가 제공하는 저수준 그래픽 처리 인터페이스
UI 프레임워크가 실제로 화면에 그래픽을 그릴 때, 내부적으로 OS 렌더링 API를 호출해 픽셀을 렌더링
요약 정리
UI 프레임워크는 개발자가 쉽게 UI를 만들 수 있도록 추상화된 고수준 도구입니다.
OS 렌더링 API는 UI 프레임워크가 내부적으로 사용하는 저수준 그래픽 엔진입니다.
즉, UI 프레임워크는 OS 렌더링 API 위에서 동작하며, 개발자는 보통 렌더링 API를 직접 다루지 않습니다.
[Android] Activity/Fragment가 View를 의미하지 않는다는 의미
1. 용어 구분
View 실제 화면에 그려지는 UI 컴포넌트 (
TextView
,Button
,ImageView
등)Activity 앱의 한 화면 전체를 담당하는 컨테이너
Fragment Activity 내에서 UI의 일부를 담당하는 모듈화 단위 → 둘 다 여러 View를 포함·관리하는 컨트롤러/관리자 역할
2. Activity/Fragment와 View의 차이
Activity/Fragment는 View가 아님
Activity/Fragment: UI 구조, 동작, 생명주기, 화면 전환 등 로직 및 컨테이너 역할
View: 실제로 화면에 그려지는 UI 요소
Activity/Fragment는 View를 소유/관리할 뿐, 그 자체가 View는 아님
예시
Activity
는setContentView()
로 View를 배치Fragment
는onCreateView()
에서 View를 생성
3. 실무에서 혼동하기 쉬운 사례
Activity = View? Activity는 View를 포함하지만, View 계층에 직접 속하지 않음
Fragment = View? Fragment는 View를 반환하지만, View를 관리하는 객체일 뿐 그 자체가 View는 아님
4. 예시 코드
// Activity 예시
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // View를 설정
}
}
// Fragment 예시
class MyFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_my, container, false) // View 생성
}
}
Activity/Fragment는 View를 생성·관리하지만, 자신이 View는 아님
5. 핵심 요약
Activity/Fragment = View의 컨트롤러/컨테이너
View = 실제 화면에 그려지는 UI 요소
용어를 명확히 구분해 사용해야 하며, Activity/Fragment를 View라고 혼동하면 안 됨
Last updated