인플레이션이란 XML레이아웃 파일의 내용이 setContentView(), LayoutInflator객체 등을
통해 실제 메모리상에 로드되어 화면에 보여지는 일체의 과정을 의미한다.
XML레이아웃파일의 인플레이션의 순서는 다음과 같다.
1) XML레이아웃파일의 내용이 프로젝트가 빌드되는 시점에 이진코드로 컴파일되어 애플리케이션에 포함된다.
2) 실행 시점에 컴파일 된 이진코드가 메모리상에 객체화된다. |
setContentView()메서드는 하나의 액티비티 전체를 설정하는 기능이다.
setContentView()메서드는 2종류이다..
1) XML레이아웃을 메모리상에 객체화(인플레이션) public void setContentView(int layoutResID)
2) 화면에 나타나는 뷰를 지정 public void setContentView (View view, [ViewGroup.LayoutParams params]) |
LayoutInflator객체는 일부 뷰만을 부분객체화 하는 기능이다.
이 객체는 시스템 서비스로 제공되며, getSystemService()메서드를 통해 참조가 가능하다.
아래는 contentsLayout.xml내 button.xml이라는 일부 뷰를 추가하는 예제코드이다.
MainActivity.java
public class NewActivity3 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 1. Inflator 시작버튼 Button startBtn = (Button) findViewById(R.id.startBtn); startButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // inflator 메서드 실행 inflateLayout(); } }); } private void inflateLayout() { // 추가된 컨텐츠가 삽입될 LinearLayout LinearLayout contentsLayout = (LinearLayout) findViewById(R.id.contentsLayout); // LayoutInflator 객체 참조 LayoutInflator inflator = (LayoutInflator) getSystemService(Context.LAYOUT_INFLATER_SERVICE); // inflate메서드를 통해 button.xml 인플레이션 수행 inflator.inflate(R.layout.button, contentsLayout, true); Button btnSelect = (Button) findViewById(R.id.btnSelect); CheckBox allDay = (CehckBox)findViewById(R.id.allDay); } }
'Android > Develop' 카테고리의 다른 글
[Android-Develop] getContext(), getApplicationContext(), getBaaseContext() (0) | 2015.01.05 |
---|---|
[Android-Develop] 액티비티(Activity) 구성 (0) | 2015.01.05 |
[Android-Develop] TextWatcher (0) | 2015.01.01 |
[Android-Develop] 위젯 - 에디트텍스트(EditText) (0) | 2015.01.01 |
[Android-Develop] 위젯 - 버튼(Button) (0) | 2015.01.01 |