안드로이드 Z-Order, 네이티브 컨트롤 그리고 10.3 RIO

 

10.3 RIO 이전에는 TWebBrowserTMediaPlayer와 같이 플랫폼에서 네이티브로 작동하는 컨트롤을 사용할 때, 이 위에 다른 컨트롤을 배치할 수 없었습니다. 컨트롤을 차곡차곡 쌓는 것을 일명 우선순위라는 의미의 Z-Order 라고 부릅니다. 특히 TMultiView 를 함께 적용하는 경우 이 문제가 더욱 심했습니다. 플랫폼 네이티브 컨트롤의 위쪽이

아닌 아래쪽으로 배치되기 때문입니다. 우회할 수 있는 여러 방법들이 있기는 했지만, 여전히 어려움은 있었습니다.

 

 

XE7 버전에서 iOS용 ControlType 속성이 처음 적용되었습니다. 그리고 10 시애틀 버전에서는 이 속성이 윈도우용까지 확장되었습니다. 플랫폼 설정을 변환하면 파이어몽키 컨트롤이 런타임 시 플랫폼 네이티브 컨트롤로 전환됩니다. 

 

10.3 RIO에서는 ControlType 속성이 안드로이드 용으로까지 확장됩니다. 그리고 이로써 얻게될 두 가지 중요한 이점을 소개하고자 합니다: 더욱 네이티브한 컨트롤과 수정된 Z-Order가 그것입니다.

 

 

다양한 안드로이드 네이티브 컨트롤

 

플랫폼에서 항상 네이티브하게 작동되는 컨트롤들은 TWebBrowser, TMediaPlayer, TBannerAd, TMapView가 있습니다 (이 컨트롤들은 파이어몽키(FMX)가 아닌 기존 안드로이드 OS에서 렌더링 됩니다). 10.3 RIO 버전부터 필요에 따라 플랫폼에서 네이티브로 작동하는 새로운 4가지 컨트롤들을 선보입니다. 

 

[TSwitch 컴포넌트]

 

위 컨트롤들의 ControlType 속성을 설정하면, 파이어몽키가 아닌 안드로이드 시스템이 이 컨트롤들을 렌더링하게 되는 것입니다. 이 컨트롤들이 작동할 때 보이는 변화를 확인할 수 있을 것입니다.

 

특히 사용자의 키보드 입력이나 텍스트 수정과 밀접한 관계가 있는 TEdit에서 이 기능이 매우 중요합니다.

플랫폼의 ControlType을 TEdit와 함께 활용할 때 얻을 수 있는 이점은 다음과 같습니다:

  • 자동 완성: 텍스트를 입력하는 도중 관련된 텍스트를 자동으로 보여줍니다. 공백 표시줄을 클릭해 바로 적용할 수 있습니다.
  • 정의: 단어를 선택하고 '정의(Define)'을 클릭해 사전에서 해당 단어의 정의를 확인할 수 있습니다.
  • "." 자동 입력: 스페이스바를 연속으로 두 번 누르면 공백에 마침표가 삽입됩니다.
  • 텍스트 자동 입력: 텍스트 입력 시 단어나 문구로 확장될 수 있습니다.

 

이와 같은 동작들 중 일부는 안드로이드 플랫폼마다 다를 수 있습니다 (예: 삼성의 경우 클립보드 기능이 있음).

이 설정은 안드로이드 기기의 설정(Settings) > 일반(General) > 키보드(Keyboard) 경로에서 설정할 수 있습니다.

 

 

 

네이티브로 인식되는 안드로이드 Z-Ordering

 

위의 다양한 컨트롤들은 Z-Order를 플랫폼 네이티브 컨트롤로 제어할 수 있게 되는 것입니다.

예를 들어 TMediaPlayer 위에 제어 버튼을 배치할 수 있습니다. 이러한 컨트롤에는 ControlType 속성이 있어 플랫폼을 설정하면 다른 플랫폼 네이티브 컨트롤들과 함께 Z-Order를 유지할 수 있습니다. 

 

플랫폼에 ControlType을 설정한다고해서 플랫폼-네이티브로 사용되는 것은 아닙니다. 다만 이 기능은 다른 플랫폼 네이티브 컨트롤들과 제대로 작동할 수 있도록 해주는 것입니다.

 

관련글


 

10.3 리오의 업데이트 버전들

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15800
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 14207
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16756
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22317
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23634
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 19148
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39585
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 175011
110 헬스케어 분야에서의 델파이 - 코로나에 맞서며 file 김원경 2020.04.29 617
109 [10.4 시드니 신기능] 겟잇 패키지 매니저(GetIt Package Manager) 개선 험프리 2020.05.21 608
108 이 달의 기술자료 - 2018년 10월 file 험프리 2018.10.01 603
107 VCL의 역할과 방향 - 마르코 칸투의 VCL 이야기! 관리자 2019.12.17 594
106 올 해의 기술자료 TOP 10 - 개발자들이 가장 많이 클릭한 기술자료는? 관리자 2018.10.24 594
105 [발표자료] 20151019 David I 초청 워크샵: 윈도우 애플리케이션 개발자를 위한 DeepDive! 관리자 2015.10.20 593
104 이 달의 기술자료 - 2016년 09월 file 험프리 2016.08.25 592
103 이 달의 기술자료 - 2021년 04월 험프리 2021.03.25 586
102 이 달의 기술자료 - 2018년 01월 험프리 2017.12.28 585
101 프로젝트 경험을 통해 터득한 효과적인 마이그레이션 프로세스 file 험프리 2020.01.22 581
100 RAD스튜디오 로드맵 - 2017년 9월 관리자 2017.10.23 577
99 주요 OS 시장 점유율 - 윈도우와 안드로이드! file 관리자 2019.11.19 574
98 [업데이트][핫픽스][10.2.2] RTL 호환성패치 및 안드로이드 애니메이션 문제 해결 - 2018년 2월 패치 file 험프리 2018.02.20 574
97 [10.4 시드니 신기능 Deep Dive] 겟잇 패키지 매니저의 새로운 기능들 관리자 2020.06.22 570
96 기술자료 TOP 7 - 개발자들이 가장 많이 클릭한 기술자료는? (2019년 상반기) 관리자 2019.06.25 569
95 [10.3 리오] 기타 컴파일러, 데이터, RTL 개선사항 험프리 2018.12.06 568
94 RESTful 마스터-디테일 데이터를 사용하는 클라이언트 애플리케이션을 TRESTResponseDataSetAdapter를 사용하여 개발하기 file 험프리 2020.03.03 565
93 [10.4 시드니][업데이트 2] What's NEW! 신기능 자세히 보기 관리자 2021.02.26 563
92 RAD 스튜디오에서 iOS 12에 대응 험프리 2018.09.27 562
91 [업데이트][패치][10.3.3] RAD 스튜디오 10.3.3 Indy 서버 SSL 인증서 패치 험프리 2020.01.14 559