안드로이드 개발 질문/답변
(글 수 45,052)
(1) Activity 내의 setContentView 메소드는 xml 에 문서에 정의된 레이아웃과 차일드 뷰의 속성을 읽어
실제 뷰 객체를 생성하여 Activity 내부에 채워 줍니다.
이러한 과정을 Inflate 라고 하는데요..
(2) 이 과정을 코딩으로도 구현 할 수 있습니다.
(3) 먼저 Inflater 를 얻고 , Inflater의 inflate(리소스) 메소드를 호출하여
해당 리소스의 정보를 순서대로 해석하고 차일드 뷰를 생성한
이후 루트 뷰를 리턴 합니다.
(4) 리턴된 루트뷰를 setcontent() 메소드의 인자값으로 호출하게 되면 리턴된 뷰가 화면에 채워지게 되는데요..
질문입니다.
미리 결정된 디자인을 setContentView(리소스) 를 전달해주면 알아서 전개하고 화면에 채워주는데..
왜 구지 Infater 를 사용하여 리소스를 따로 전개하여 화면에 뿌려주는 걸까요?
모든 요소는 디자인 타임에 결정되지 않으며 , 리스트 뷰나 리니어안에 뷰를 동적으로 생성해야 하는 경우가 빈번하다
이때 차일드 뷰를 직접 생성하는 것 보다는 XML 로 잘 정의해 놓고 필요할 때마다 전개해서 사용하는 것이 효율적이다
라고 합니다.
위 말이 직관적으로 바로 이해가 되지 않아.. 실제로 어떤 경우가 있는지 어떠한 경우에 직접 리소스를 읽어 전개해야하는지
구체적으로 알고 싶습니다.
어떤 힌트라도 좋으니.. 조그만 도움 부탁드립니다.
실제 뷰 객체를 생성하여 Activity 내부에 채워 줍니다.
이러한 과정을 Inflate 라고 하는데요..
(2) 이 과정을 코딩으로도 구현 할 수 있습니다.
(3) 먼저 Inflater 를 얻고 , Inflater의 inflate(리소스) 메소드를 호출하여
해당 리소스의 정보를 순서대로 해석하고 차일드 뷰를 생성한
이후 루트 뷰를 리턴 합니다.
(4) 리턴된 루트뷰를 setcontent() 메소드의 인자값으로 호출하게 되면 리턴된 뷰가 화면에 채워지게 되는데요..
질문입니다.
미리 결정된 디자인을 setContentView(리소스) 를 전달해주면 알아서 전개하고 화면에 채워주는데..
왜 구지 Infater 를 사용하여 리소스를 따로 전개하여 화면에 뿌려주는 걸까요?
모든 요소는 디자인 타임에 결정되지 않으며 , 리스트 뷰나 리니어안에 뷰를 동적으로 생성해야 하는 경우가 빈번하다
이때 차일드 뷰를 직접 생성하는 것 보다는 XML 로 잘 정의해 놓고 필요할 때마다 전개해서 사용하는 것이 효율적이다
라고 합니다.
위 말이 직관적으로 바로 이해가 되지 않아.. 실제로 어떤 경우가 있는지 어떠한 경우에 직접 리소스를 읽어 전개해야하는지
구체적으로 알고 싶습니다.
어떤 힌트라도 좋으니.. 조그만 도움 부탁드립니다.
2011.03.24 14:23:44
인터넷에 있는 글 목록을 가져와서 리스트로 뿌려주는 것을 생각해보면
처음엔 비어있는 리스트뷰를 출력합니다. setContentView(리소스)로 가능하죠.
그리고 인터넷에 접속해서 글 목록을 가져와서 리스트뷰에 추가해줘야 합니다.
하나의 글에는 '제목','글쓴이','조회수','날짜' 등등의 항목이 있을테고, 이 하나의 항목에 대한 디자인을 item.xml 에 정의해놓았다면
이때 item.xml 을 inflate 하여 view를 생성한 후에 제목,글쓴이등등을 셋팅하고
이 view를 리스트뷰의 child로 add 해주어야겠죠.
2011.03.24 15:37:41
어플리케이션에서 소스라인과 리소스라인을 구축하여 서로관의 모듈화를 극대화 해서 작업하면 작업의 능률이 높습니다.
소스를 개발자가 리소스는 디자이너가 하면 작업 시간을 줄일뿐 아니라 전문화 시킬 수도 있지요..
이렇게 리소스화해서 얻는 이익은 많이 있습니다. 다만 리소스를 읽어 들이는 속도가 있으므로 성능은 반감 될 수 있겠으나
하드웨어의 성능이 우수하여 현 시대에서는 걱정할 필요가 없으며 오히려 아키텍트상 리소스를 더욱 장려 하고 있습니다.
리소스를 비단 디자인에 치우신 이미지만을 일컫지는 않습니다. Row data 들을 리소스화 하여 data관리를 할 수도 있고
다른쪽에서 작업한 xml , c , 기타등등의 빌드해서 만든 object를 링킹 하여 하나로 묶으면 여러 언어로도 작업이 가능하니 저작툴을 만들 때도 용이하게 됩니다.
또한 Copy & Paste 가 쉬워지니 개발 기간도 줄일 수 있고 필요없는 작업도 줄일 수 있는 이익들이 크지요..



