[Android-Develop] 인플레이션(Inflation)

2015. 1. 5. 10:20 - Song's IT

인플레이션이란 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 카테고리의 포스트를 톺아봅니다