[질문] 레이아웃 구성시 사용 할 컴포넌트

화면 구성을 하려는데 어떤 컴포넌트를 사용 해야 하는지 잘 몰라서 질문드립니다.
(안드로이드 / 타이타늄 SDK 3.2.2 GA )

화면은 아래와 같이 3단으로 구성 됩니다.

상단메뉴
중단 컨텐츠
하단 메뉴.

상단 메뉴는 중단의 컨텐츠와 같은 뷰 안에 있습니다.( 중단이 변경 되면 상단 메뉴도 같이 변경 됩니다.)

하단 메뉴는 항상 보이며, 변경도 안됩니다.
위와 같은 화면 구성을 할때
Window를 사용하자니… 모든 뷰마다 하단 메뉴를 생성해야 하는 문제가 있고,

View를 사용하자니 백버튼에 대한 동작을 직접 코딩해야 하는 문제가 있고…
어떻게 화면 구성을 하면 좋은가요?
조언 부탁 드립니다.

타이타늄을 쓰다보면 이것 저것 요소를 많이 넣어놓으면 결국 메모리누수가 생겨 골치가 점점 아파지더군요. 직업 개발자가 아니다 보니 되는대로 짜대는데, 요즘은 차라리 웹뷰 하나 띄워두고 레이아웃이고 뭐고 전부 html 로 해 놓고는 웹뷰안에다 자바스크립트 넣고, 좀 복잡한 것만 event 걸어서 타이타늄으로 빼내서 처리하는 짓을 하고 있습니다. 그럴 바에 타이타늄 왜 쓰냐 하겠지만, 할 줄 아는게 이것 밖에 없어서 그런다고 밖에 할 말이 없지요. 웹뷰하나만 처음부터 끝까지 쓰는게 메모리 누수는 작은거 같더라구요. … 공연히 탭뷰 써서 만든 것도 다시 웹뷰에다 하는걸로 했으면 메모리는 덜 먹는게 아닌가 생각하고 있습니다. 님 같은 경우 중단에서 뭘 하냐에 따라 많이 달라지겠습니다.

저 같은 경우는 보통 navigation bar를 또 하나의 객체로 만들어 사용합니다. 그래서 필요할 때 require를 사용하여 불러오지요.(예를들어 view로 구성된 navagationBar.js를 따로 만들어 window.js에서 불러오도록) 왜냐하면 상단 메뉴나 하단 메뉴 같은 것은 보통 똑같은 page에서 다시 쓰이는 경우가 많기 때문입니다. 이렇게 만들게 되면 상단메뉴의 경우 백버튼 동작에 관한 코딩은 한 번만 작성해 놓으면 모든 페이지에서 쓰일수 있습니다.

그리고 view는 보통 layout을 vertical로 사용하여 여러가지 사이즈의 스크린 위치 문제를 최소화 합니다.
저라면 말씀하신 상단메뉴, 중단 컨텐츠, 하단 메뉴를 상단과 하단은 따로 객체로 만들어 불러오고 중단뷰는 layout을 vertical로 만들어 사용할 것 같네요.

1개의 좋아요

참고로 이런 경우 require를 사용할 때 저는 xml에 사용합니다.
<.Require src=“naviBar” id=“naviBar”>

Ti.UI.Window는 Android의 경우 Activity로 동작합니다. (Activity는 화면에 보여주는 기준 단위가 할 수 있으며 자세한 것은 android activity로 구글 검색해보면 많이 나올 겁니다.) Activity는 기본적으로 back button 누르면 닫히게 되어 있습니다. 그리고 open하고 close할때 약간의(?) 기본 애니메이션도 보이죠.^^ 한 화면 안에서 일어나는 처리를 하고 싶으시다면 개별구현하고 backbutton에 대한 동작정의를 해야합니다. @heedoo 님 말씀처럼 반복적으로 쓰이는 부븐을 따로 controller로 빼고 필요한 부분에서 require로 불러오면 편합니다.

상황에 따라 조금 다를 수도 있지만 native보다는 webview로 짜서 메모리 덜 먹고 메모리 누수가 더 적고 하는 건 아닙니다.메모리 누수는 javascript를 어떻게 짜느냐에 따라 크게 달라집니다. webview로 하면 더 성능은 나오지 않는게 일반적입니다. webview에서는 html 파서, css파서, js엔진이 개별적으로 구동되고 어디까지나 webview는 app안에서 돌아가는 것이므로 app이 사용할 수 있는 리소스보다는 더 작기 때문입니다.
(최근 android 키켓의 경우 기본 webview로 chrome webview가 들어가서 성능이 많이 좋아 지긴 했더군요^^)
상황에 따라 webview와 native ui를 적절히 쓰는게 가장 좋겠죠. 국내 hotel now 앱 같은 경우에는 titanium을 이용하였고 webview를 중심으로 만들어 졌다고 합니다.

참고로 저는 WebView 보다는 native ui 를 최대한 활용하는 것을 선호합니다. :smile:

오우 이렇게 많은 도움을 주셔서 정말 감사합니다.
Window를 이용하려고 했지만… Window의 open 시간이 좀 걸리더라고요.
release 빌드를 하면 더 빠를까 생각해서 해봤으나 마찬가지고…

그래서 View 를 이용하려고 방향을 바꿨습니다.
(Window가 편해서 좋은데 ㅠㅠ)

자바스크립트가 싱글 쓰레드라서 윈도우를 열때 많은 일들을 같이 하면,… 윈도우가 뜨는 시간이 느릴수 밖에 없습니다.

일단은 빈 윈도우 먼저 오픈한 뒤에… 하나둘씩 로드하는 방식으로 짜면 더 좋은 성능의 네이티브 UI를 만들수 있을꺼어요. 저도 개인적으로는 네이티브를 더 선호합니다. 특히, 무한 리스트 형태로 많은 컨텐츠를 불러오는 UI 라면 웹뷰보다는 네이티브로 작성하시라 권하고 싶네요~ :smile: