부분 레이아웃을 활용하여 xml파일을 java파일없이 다른 컨테이너에 부분 화면으로 활용할 때 쓰인
구문이다... 첫줄밖에 모르겠다..
LinearLayout contentsLayout = (LinearLayout) findViewById(R.id.contentsLayout);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.button, contentsLayout, true);
------------------------------------------------------------------------------------------
인플레이션.. 어렴풋이 이해는 간다 하지만 어렴풋이라는거... 어려운건 시스템서비스에 대한
기본 지식이 없다보니 뭔말인지 모르겠다
getSystemService를 알아보자.
------------------------------------------------------------------------------------------
getSystemService(String name) 메서드의 매개 변수를 사용하여 얻게 되는 객체들
name |
반환되는 객체 |
ACTIVITY_SERVICE |
시스템 내부의 액티비티 상태를 파악하는 ActivityManager |
ALARM_SERVICE |
주어진 시간에 경고메시지를 발신하는 AlarmManager |
AUDIO_SERVICE |
오디오를 관리하는 AudioManager |
CONNECTIVITY_SERVICE |
네트워크 연결을 관리하는 ConnectivityManager |
DOWNLOAD_SERVICE |
HTTP 다운로드 작업을 수행하는 DownloadManager |
INPUT_METHOD_SERVICE |
입력 방법을 관리하는 InputMethodManager |
KEYGUARD_SERVICE |
keyguard를 관리하는 KeyguardManager |
LAYOUT_INFLATER_SERVICE |
레이아웃 리소르를 인플레이트하는 LayoutInflater |
LOCATION_SERVICE |
GPS를 통한 위치 서비스를 제공하는 LocationManager |
NOTIFICATION_SERVICE |
백그라운드 이벤트를 알려주는 NotificationManager |
POWER_SERVICE |
파워를 관리하는 PowerManager |
SENSOR_SERVICE |
센서 접근할 수 있는 SensorManager |
SEARCH_SERVICE |
검색을 사용하는 SearchManager |
TELEPHONY_SERVICE |
단말기내 전화를 관리하는 TelephonyManager |
UI_MODE_SERVICE |
UI 모드를 조절하는 UiModeManager |
VIBRATOR_SERVICE |
진동 관리하는 Vibrator |
WIFI_SERVICE |
Wi-Fi 연결을 관리하는 WifiManager |
WINDOW_SERVICE |
화면창을 관리하는 WindowManager |
-------------------------------------------------------------------------------------------
SystemService란건 디바이스내에서 각각의 기능들을 관리하는 객체라는 걸 알았다.
중요한건 SystemService가 아니라 LayoutInflater가 수행하는 inflater 기능이다
알아보자.(상당히 어려워질 것 같다. 제길)
-------------------------------------------------------------------------------------------
LayoutInflater
1. XML문서에 정의된 레이아웃과 Child 뷰의 속성을 읽어 실제 뷰 객체를 생성해내는 동작.
2. 레이아웃의 정보대로 객체를 생성하고 속성 변경 메소드를 순서대로 호출하는 것.
3. 동적으로 View를 교체할 수 있으며 복합적인 View를 여러 곳에서 공통으로 사용하고자 할 때 유리
위 Inflater가 하는 행위가 inflate이다
inflate란 xml에 씌어져 있는 view의 정의를 실제 view 객체로 만드는 역할을 한다.
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
이 구문이 의미하는 바는 부분 화면을 구성할 xml 소스를 inflate 하기 위해 LayoutInflater를 불러오는
구문이라 할 수 있겟다.
inflater.inflate(R.layout.button, contentsLayout, true);
하지만 setContentView를 하지 않았는데 화면에 뜨는 이유는 무엇일까 찾아봤는데, inflate()
인자 중 마지막 true라는 부분이 그 기능을 수행하는 것이였다. 이유도 모른채 한참 해맸음..
inflate() 메소드의 정의
inflate(int resource, ViewGroup root)
resource - XML 레이아웃 리소스를 지정하는 값
root - 뷰들을 객체화하여 추가할 대상이 되는 부모 컨테이너
static LayoutInflater LayoutInflater.from(Context context)
static View inflate(Context context, int resource, ViewGroup root)
------------------------------------------------------------------------------------------
참조 : http://promobile.tistory.com/169" target="_blank">http://promobile.tistory.com/169
'Mobile' 카테고리의 다른 글
[ Ionic ] 웹개발자가 만드는 Ionic 어플 - 1탄 (설치, 오픈 소스 활용) (2) | 2019.12.02 |
---|---|
[Android] Uri.parse 예제 소스 (0) | 2019.04.12 |
[ Android ] 브로드캐스트 수신자 (0) | 2019.04.11 |
[Android] 안드로이드 4대 구성요소 (0) | 2019.04.11 |
[Android] Fragment (0) | 2019.04.11 |
댓글