●인플레이션(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> |
<?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> |
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 캔버스(Canvas) (0) | 2015.03.25 |
---|---|
안드로이드 리스트뷰2 (ListView), Adapter 재정의 (0) | 2015.03.25 |
안드로이드 커스텀 버튼 만들기 (0) | 2015.03.17 |
안드로이드 xml레이아웃 include (0) | 2015.03.17 |
안드로이드 리스트뷰1 (ListView) (0) | 2015.03.17 |
댓글