- super.onCreate() 메소드 : 단순히 부모 클래스의 동일한 메소드를 호출.
- setContentView() 메소드 : 애플리케이션이 XML 레이아웃의 내용을 이해하도록 만드는 역할을 함.
- 안드로이드에서는 화면을 구성하는 방법으로 XML 레이아웃을 사용하는데 이 XML 레이아웃 파일의 내용은 애플리케이션이 실행될 때 메모리로 로딩되어 객체화 됨.
- 인플레이션(Inflation) : XML 레이아웃에 정의된 내용이 메모리 상에 객체화되는 과정.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
package org.androidtown.basic.inflater;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SampleInflationErrorActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
}
});
setContentView(R.layout.activity_main);
}
}
|
cs |
- setContentView() 메소드
1) 화면에 나타낼 뷰를 지정하는 역할
2) XML 레이아웃의 내용을 메모리 상에 객체화하는 역할
- LayoutInflater 클래스 : 화면 전체가 아닌 일부 뷰만을 위한 XML 레이아웃을 매모리 상에 객체화 함. 전체 화면 중에서도 일부분만을 차지하는 화면 구성요소들을 XML 레이아웃에 로딩하여 보여줌.
ex) getSystemService(Context.LAYOUT_INFLATER_SERVICE)
- 시스템 서비스로 제공되는 기능들은 모두 getSystemService()라는 메소드를 사용하여 객체를 참조한 후 사용해야 함.
- 메인 레이아웃이 /res/layout/activity_main.xml 파일 안에 XML로 정의되어 있으면 setContentView(R.layout.activity_main)이라는 코드를 통해 화면에 나타낼 수 있음.
- 그 중 일부를 분리하여 /res/layout/button.xml이라는 파일에 정의하였다면 이 파일의 내용은 LayoutInflater 개체를 이용해 뷰그룹 객체로 객체화(인플레이션)한 후 메인 레이아웃에 추가되는 과정을 거치게 됨.
- View inflate (int resource, ViewGroup root, boolean attachToRoot)
1) XML 레이아웃 리소스를 지정하는 값
2) 뷰들을 객체화하여 추가할 대상이 되는 부모 컨테이너
- LayoutInflater 객체의 경우, 시스템 서비스로 제공되므로 getSystemService() 메소드를 이용해 객체를 참조하지만 LayoutInflater 클래스에 정의된 from() 메소드를 사용할 수도 있음.
→ static LayoutInflater LayoutInflater.from (Context context)
- LayoutInflater를 내부적으로 지원하는 View의 클래스 메소드를 이용하는 방법도 있음.
→ static View inflate (Context context, int resource, ViewGroup root)
출처 : Do It! 안드로이드 앱 프로그래밍 (정재곤 지음, 이지스퍼블리싱)
'Programming > Android' 카테고리의 다른 글
멀티 터치 (Multi Touch) (0) | 2017.03.13 |
---|---|
매니페스트 (Manifest) (0) | 2017.01.25 |
위험 권한의 세부 정보 (0) | 2017.01.25 |
수명주기 (0) | 2017.01.24 |
기본 위젯들 (0) | 2017.01.17 |
프레임 레이아웃과 뷰의 전환 (0) | 2017.01.17 |
스크롤뷰 (0) | 2017.01.17 |
테이블 레이아웃 (0) | 2017.01.17 |