MyCloud

[안드로이드] 레이아웃 구현과 인플레이션 과정 본문

Programming/Android

[안드로이드] 레이아웃 구현과 인플레이션 과정

Swalloow 2016. 4. 9. 21:17



안드로이드 레이아웃 구현


안드로이드의 레이아웃은 일반적으로 XML을 통해 구현합니다.



위와 같이 Design 탭을 이용해 컴포넌트를 옮겨서 완성하는 방법이 있고

또는 자바코드로 구현할 수도 있습니다.


XML로 구현했을 때의 장점은 우선 편리하다는 점입니다.

코드를 작성할 필요없이 안드로이드 스튜디오를 통해 쉽게 구현할 수 있으며 시각화 할 수 있습니다.

그리고 가장 큰 이점은 어플리케이션을 행동을 제어하는 코드로부터 따로 표시하기 좋다는 점입니다.

자바에서 소스코드를 수정하고 다시 컴파일링하지 않아도 수정 또는 변경할 수 있습니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.swalloow.mytest.MainActivity"
android:orientation="horizontal">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2" />
</LinearLayout>

위와 같이 첫줄에 인코딩 정보를 뷰마다 한번씩 입력하게 되고

각 컴포넌트는 트리 구조를 이루게 됩니다.


id 속성은 XML 내에서 보기를 식별하기 위해 사용되며 과정은 다음과 같습니다.

1. android:id="@+id/button" 을 통해 보기/위젯을 고유한 ID에 할당합니다.

2. 객체의 인스턴스를 생성하고 이를 레이아웃에서 findViewById()를 통해 캡처합니다.

Button button = (Button) findViewById(R.id.button);
Button button2 = (Button) findViewById(R.id.button2);







안드로이드 레이아웃 인플레이션


XML에서 정의한 내용을 화면에 적용하기 위해서는 인플레이션 과정을 거쳐야 합니다.

인플레이션(Inflation) 이란, XML 레이아웃에 정의된 내용이 메모리 상에 객체화되는 과정을 말합니다.

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
기본 액티비티를 생성하면 위와 같은 코드가 자동으로 생성됩니다.
여기서 setContentView(R.layout.activity_main); 이 부분을 통해 레이아웃을 생성합니다.

레이아웃이 인플레이션 되는 과정은 다음과 같습니다.
1. XML 레이아웃에 정의된 뷰의 ID 속성 값을 읽어옵니다.
2. 어플리케이션이 실행될 때 XML 레이아웃 파일의 내용이 메모리로 로딩됩니다.
3. 메모리로부터 읽어 객체화하고 화면에 나타냅니다.




Comments