안드로이드 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 15438
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39255
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174699
694 [패치] RAD스튜디오 10.4.2, 델파이 컴파일러 관리자 2021.05.04 896
693 API로 머신 러닝과 컴퓨터 비전 활용하기 관리자 2021.05.04 526
692 이 달의 기술자료 - 2021년 05월 험프리 2021.04.29 432
691 델파이/C++ 프로그램 현대화 – 패스트리포트(FASTREPORT)를 활용해 윈도우 HIGH DPI 지원 버전으로 마이그레이션하기 관리자 2021.04.26 422
690 [TCoffeeAndCode 세미나] 보안, 인공지능, 데브옵스 등 관리자 2021.04.21 356
689 보안을 주제로 한 가장 훌륭한 컨텐츠 TOP 4 관리자 2021.04.20 432
688 플루언트 디자인 시스템으로 애플리케이션 현대화하기 관리자 2021.04.08 393
687 MODERNLISTVIEW 라이브러리 – 커스터마이징 가능한 강력한 크로스 플랫폼 라이브러리 활용 방법 관리자 2021.04.06 400
686 이 달의 기술자료 - 2021년 04월 험프리 2021.03.25 584
685 [10.4 시드니][업데이트 2] TNUMBERBOX – 새로운 VCL 컨트롤 관리자 2021.03.08 529
684 [10.4 시드니][업데이트 2] TCONTROLLIST – 새로운 VCL 컨트롤 관리자 2021.03.02 489
683 네이티브로 IOS 월렛 개발하기 (델파이, C++빌더) 관리자 2021.03.02 506
682 [10.4 시드니][업데이트 2] RAD스튜디오 10.4.2 자동 설치(SILENT INSTALLER) 관리자 2021.03.02 540
681 이 달의 기술자료 - 2021년 03월 험프리 2021.02.26 432
680 [10.4 시드니][업데이트 2] What's NEW! 신기능 자세히 보기 관리자 2021.02.26 557
679 TCOFFEE & CODE WEEK 관리자 2021.02.19 368
678 버전별 업데이트된 주요 기능들 (C++빌더6 / 델파이7부터 최신 버전까지!) 관리자 2021.01.29 376
677 이 달의 기술자료 - 2021년 02월 file 험프리 2021.01.26 510
676 [고객 사례- 델파이, 게임] 체스 오프닝 위저드 - 60,000여명의 체스 플레이어가 실제로 사용하는 앱 관리자 2021.01.18 713
675 생산성을 끌어올려줄 겟잇(GetIt)의 최신 컴포넌트들 관리자 2021.01.18 513