●인플레이션(inflation)

- 레이아웃xml에 명시한 위젯이 안드로이드 메모리에 셩성되는 과정은 인플레이션이라 한다.


- setContentView를 이용하면 xml레이아웃을 인플레이션 한 후 화면에 보여주는 기능을 하기도 하고, 인플레이션 된 위젯을 화면에 구성하는 기능을 한다.





●예제

- TestActivity.java

package study.custom;


import com.example.day0314.R;


import android.app.Activity;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.widget.Button;

import android.widget.LinearLayout;


public class TestActivity extends Activity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//버튼이 화면에 나타나지 않고 그냥 메모리에 올리는 과정을 테스트한다.

//xml에 명시한 위젯이 안드로이드의 실제 위젯으로 메모리에 형성되는 과정을 '인플레이션'이라고 한다.

//안드로이드에서는 xml에 명시한 위젯을 메모리에 올리는 과정을 개발자가 직접 수행할 수 있도록

//Inflater를 지원한다.

LayoutInflater inflater = (LayoutInflater)getSystemService(this.LAYOUT_INFLATER_SERVICE);

//test_activity라는 xml 먼저 인플레이션 시킴(메모리에 올림)

LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.test_activity, null, false);

Button btnB = (Button)inflater.inflate(R.layout.b, null, false);

Button btnC = (Button)inflater.inflate(R.layout.c, null, false);

//리니어 레이아웃에 버튼 추가

linearLayout.addView(btnB);

linearLayout.addView(btnC);

//인플레이션 과정은 x

//인수로 넘긴 linearLayout 위젯만 택티비티 화면에 구성함

setContentView(linearLayout);

}

}




test_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
</LinearLayout>



- b.xml

<?xml version="1.0" encoding="utf-8"?>

<Button xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="b" >

</Button> 




- c.xml
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="c" >
</Button> 













Posted by -현's-

댓글을 달아 주세요