안드로이드 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 15450
공지 [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
1323 BOGO 프로모션 툴 다운로드 받는 방법 안내(2015.6.1~2015.6.30 구매고객) 관리자 2014.06.16 8776
1322 델파이 XE2의 Namespace 문제 박병일 2012.01.19 8692
1321 [델파이 문법] 프로시저와 함수 #1 file 관리자 2012.07.23 8662
1320 [링크]안드로이드를 위한 데이터 스냅 서버 박병일 2012.01.12 8428
1319 Firemonkey MAC OSX 에서 ComboBox 다운현상 [2] c2design 2012.03.28 8339
1318 VCL 폼을 파이어몽키 폼으로 바꿀수 있는 컨버터 프로그램 file 박병일 2012.03.01 8328
1317 Platforms Expert for XE2 Beta 2 file 박병일 2012.02.06 8328
1316 [동영상강의] 델파이 기본교육_3.유니트구조와 코드작성1 관리자 2012.05.03 8289
1315 [델파이 문법] 데이터 타입, 변수 및 상수 #2 file 관리자 2013.02.04 8237
1314 [델파이 문법] 프로그램과 유닛 #2 file 관리자 2012.09.06 8221
1313 RadPHP 한글문제 관리자 2012.04.13 8196
1312 [참고] MAC OSX 어플리케이션 프로젝트 경로 문제 [1] c2design 2012.03.23 8142
1311 [델파이 문법] 클래스와 객체 #13 file 관리자 2012.06.11 8032
1310 [델파이 문법 시리즈] #1. 익명메소드 - 문법 file 관리자 2012.04.04 8005
1309 dbExpress 에는 TUpdateSQL 컴포넌트가 없어요! file 박병일 2012.03.05 7955
1308 VCL Style을 사용하면서 Edit 콘트롤의 컬러 변경하기 file 박병일 2012.02.08 7948
1307 [델파이 문법 시리즈] #8. 제네릭 - 문법 변경 사항(마지막) file 관리자 2012.04.03 7871
1306 [추가자료] 델파이에서 안드로이드 앱 개발 "환경설정과 개발의 시작" [1] 관리자 2013.10.01 7835
1305 Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기 [4] file Humphery 2013.12.19 7767
1304 20120510 "C++로 윈도우용과 맥용을 동시에 개발하기" 세션 동영상 관리자 2012.06.06 7756