1. Information
Inflate 란 생소한 단어인데, 뭐 하는 녀석인가요?
Inflate 는 사전적 의미로 "부풀리다" 라는 뜻입니다.
안드로이드에서 inflate 를 사용하면 xml 에 씌여져 있는 view 의 정의를 실제 view 객체로 만드는 역할을 합니다.
마치 건물의 설계도( xml 정의 )를 쭉~ 그려놓고 inflate ( 부풀리다 ) 하면 펑~ 하고 실제 건물 ( view ) 가 완성된다는 데서 inflate 라는 단어를 사용한 것 같습니다.
기본적인 사용 패턴을 알려주세요
inflate 를 사용하기 위해서는 우선 inflater 를 얻어와야 합니다.
LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
다음은 설계도 역할인 xml 이 필요합니다. 이 때 xml 의 root view 의 type이 무엇인지 알아야 합니다.
예를 들어 xml 파일 이름이 inflate_example.xml 이고, root가 LinearLayout 이라면..
LinearLayout linearLayout = (LinearLayout) inflater.inflate( R.layout.inflate_example, null );
이제 가져온 view 를 화면에 그린다면..
setContentView( linearLayout );
취합해보면, 다음과 같은 패턴으로 주로 사용합니다.
LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
LinearLayout linearLayout = (LinearLayout) inflater.inflate( R.layout.inflate_example, null );
setContentView( linearLayout );
너무 간단해 보이는데, 요게 끝인가요?
먼저 인플레이터를 얻어오는 다른 방법이 있습니다.
LayoutInflater inflater = LayoutInflater.from( this );
LayoutInflater inflater = getLayoutInflater(); ( @activity )
인플레이터를 얻어오는 것과 inflate 를 하는 것을 한줄로 하려면..
LinearLayout linearLayout = (LinearLayout) VIew.inflate( this, R.layout.inflate_example, null );
뭐 추가적으로 알려줄 정보는 없나요?
Inflater 는 성능상의 문제 때문에 compile time 에 완성된 xml 파일에 대해서만 적용 가능합니다.
즉, Runtime 에 작성되거나 제공되는 xml 에 대해서는 inflate 를 적용 할 수 없습니다.
다시 말해 R. 으로 시작되는 resource 파일들만 inflate 가능합니다.
overload 하고 있는 inflate API 함수들도 한번 같이 보죠.
View inflate( int resource, ViewGroup root )
View inflate( XmlPullParser parser, ViewGroup root )
View inflate( XMLPullParser parser, ViewGroup root, boolean attachToRoot )
View inflate( int resource, ViewGroup root, boolean attachToRoot )
마지막으로 지금까지 다룬 LayoutInflater 외에도 MenuInflater 도 있다는 것을 알려드리고 싶습니다
MenuInflater 는 getMenuInflater() 를 통해 얻어와서 ( @ activity ) void inflate( int menuRes, Menu menu )를 호출합니다.
이 메뉴 인플레이터도 성능상의 문제 때문에 compile time 에 생성된 xml, 즉 R. 으로 시작되는 resource 파일들에 대해서만 inflate 가 가능합니다.
2. Summary
- inflate 는 사전적 의미로 "부풀리다" 이며, 실제 Android 에서는 xml 파일에 정의되어 있는 view 에 대한 정의를 바탕으로 코드상에서 view 객체를 생성하는 것을 말합니다.
- inflate 는 inflater 얻어오기 -> inflate -> view 활용 의 패턴으로 주로 사용 됩니다.
- 가장 자주 쓰이는 inflater 는 LayoutInflater 이며 MenuInflater 도 있습니다.
- 성능상의 이유로 inflate 가능한 xml 은 compile time 에 resource 안에 있는 정의되어 있는 녀석들만 가능합니다.
3. References.
-
http://developer.android.com/reference/android/view/LayoutInflater.html
Android Developer Doc. LayoutInflater.
-
http://developer.android.com/reference/android/view/MenuInflater.html
Android Developer Doc. MenuInflater.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] read-only file system. 루팅 후에도 나오네요. 어떻게 해야 할까요? (7) | 2012.01.24 |
---|---|
[Android/안드로이드] Manifest Activity Tag 의 windowSoftInputMode 속성에 대해 파헤쳐보아요! (0) | 2012.01.23 |
[Android/안드로이드] Manifest Activity 의 속성 exported에 대해 알아보아요. (0) | 2012.01.23 |
[Android/안드로이드] Manifest Activity 의 속성 ConfigChanges 에 대해 알아보아요. (0) | 2012.01.23 |
[Android/안드로이드] Android Developer AsyncTask 파트 번역본입니다. (4) | 2012.01.20 |
댓글