안드로이드 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 15437
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22054
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39253
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174698
1342 [DelphiCon 요약] 델파이로 웹 다루기 (Powering the Web with Delphi) file 관리자 2021.02.16 1120
1341 [고객 사례- POS, C++빌더] YG-POS - 소상공인을 위한 무료 소프트웨어 관리자 2021.02.08 649
1340 [고객 사례- 금융, 델파이] 주식, 화폐 등 금융 정보 분석 소프트웨어 - 게임스탑, 비트코인, 아마존, 구글 등 관리자 2021.02.04 627
1339 ‘장기 활용 가능성’이 가장 뛰어난 프레임워크는? (델파이 VS. WPF VS. ELECTRON) 관리자 2021.02.01 462
1338 [델파이 웹개발] 델파이로 풀스택 웹 개발하기 - uniGUI 활용 (Full Stack Web Development with uniGUI for Delphi) file 관리자 2021.02.01 4290
1337 버전별 업데이트된 주요 기능들 (C++빌더6 / 델파이7부터 최신 버전까지!) 관리자 2021.01.29 376
1336 이 달의 기술자료 - 2021년 02월 file 험프리 2021.01.26 510
1335 [샘플 프로젝트] 심박 측정기-델파이/C++빌더와 IOT 연동하기 관리자 2021.01.25 459
1334 C++ 유니코드 문자열 리터럴(Unicode String Literal) 활용 방법 관리자 2021.01.22 449
1333 C++빌더 마이그레이션, C++ 프로젝트를 간편하게 업데이트 하는 방법 관리자 2021.01.19 310
1332 [고객 사례- 델파이, 게임] 체스 오프닝 위저드 - 60,000여명의 체스 플레이어가 실제로 사용하는 앱 관리자 2021.01.18 713
1331 생산성을 끌어올려줄 겟잇(GetIt)의 최신 컴포넌트들 관리자 2021.01.18 513
1330 [DelphiCon 요약] High DPI 고해상도를 VCL에서 활용하기 (Leveraging High DPI in VCL Applications) 관리자 2021.01.13 767
1329 [DelphiCon 요약] Spring4D 소개 - 델파이 개발을 한수준 높이기 (Introduction to Spring4D - Taking Delphi Development to the Next Level) 관리자 2021.01.08 1146
1328 새해 목표: LEARN, TEACH, REPEAT. 관리자 2021.01.05 315
1327 [DelphiCon 요약] 델파이로 함수형 프로그래밍하기 (Functional Programming With Delphi) 관리자 2020.12.29 710
1326 [DelphiCon 요약] 델파이 고성능 구현 (High Performance Delphi) 관리자 2020.12.27 900
1325 [TOP 10] 2020년 하반기, 개발자가 사랑한 기술자료는? 관리자 2020.12.24 353
1324 이 달의 기술자료 - 2021년 01월 file 험프리 2020.12.24 412