안드로이드 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 15448
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13963
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22057
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18924
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39259
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174726
1380 델파이 XE2에서 dbExpress를 이용해 오라클 연결하기 file 박병일 2012.02.15 17723
1379 이 달의 기술자료 - 2014년 4월 file 험프리 2014.04.03 16811
1378 다중 클라이언트를 위한 DataSnap 서버 만들기 관리자 2011.12.22 16117
1377 "Could not load SSL library." 오류 대응(XE7: BaaS, RESTClient, DataSnap) [1] Humphery 2014.09.12 15988
1376 RAD 스튜디오 모바일 개발 환경 설정(안드로이드, iOS) [1] file 험프리 2014.05.19 15967
1375 이 달의 기술자료 - 2015년 03월 험프리 2015.02.25 15872
1374 델파이 XE2 로 아이폰 하드웨어 컨트롤 하기 박병일 2012.01.19 15504
1373 델파이XE2의 VCL Styles 활용하기 박병일 2012.01.19 15363
1372 [REST API] REST API 이해하기 험프리 2017.05.23 15260
1371 이 달의 기술자료 - 2015년 02월 file 험프리 2015.01.29 15052
1370 파이어몽키 기반의 아이폰앱 개발에서 주소록 가져오기 박병일 2012.01.25 14431
1369 dbExpress 의 SQLConnection 에서 트랜젝션 처리하기 박병일 2012.02.08 13975
1368 델파이 XE2로 만든 아이폰 앱 - TicTacToe file 박병일 2012.01.17 13960
1367 파이어몽키 3D Text Editor file 박병일 2012.02.06 13922
1366 델파이 XE2의 DataSnap 서버와 OSX Client의 연동 박병일 2012.01.19 13545
1365 [델파이 문법 시리즈] #1. 제네릭 - 개요 file 관리자 2012.03.21 13166
1364 델파이 XE2로 아이폰앱 만들기 박병일 2012.01.18 13050