메뉴 건너뛰기

조회 수 266 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. setContentView() 함수의 역할

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:context="com.example.myapplication.MainActivity"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="81dp">

    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Hello World!!" />
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

▼ 여기 화면 구성을 위한 XML 레이아웃 리소스가 있습니다. 해당 XML은 화면에 배치되는 View와 ViewGroup에 대한 속성과 상하 배치관계 등과 같이 화면에 배치되기 위한 여러 정보가 담겨있습니다. 해당 XML 파일은 단순한 디자인 정보로 실제로 이 정보를 가지고 화면을 보여주기 위해서는 XML에 정의된 각 위젯들을 정의된 속성을 지정하고 상하관계에 맞춘 뒤 메모리에 올려야 합니다.

이러한 일련의 작업을 소스상에서 제공하는 게 setContentView() 함수입니다.

public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

▼ 프로젝트를 생성하면 액티비티를 상속받는 클래스가 default로 제공됩니다. 개발자 편의를 위해 자동으로 지원되는 기능으로 Activity 클래스를 상속받으면 반드시 onCreate() 함수를 오버 라이딩합니다. 해당 함수는 액티비티(Activity)가 실행될 때 가장 먼저 실행되는 함수로 마치 자바에서 프로그램 시 가장 먼저 실행되는 main() 함수와 비슷합니다. 

 

▼ setContentView() 함수는 첫 번째 인자로 넘겨주는 XML 레이아웃 리소스 ID에 해당하는 파일을 파싱 하여 뷰(View)를 생성하고 뷰(View)의 속성을 지정하고 뷰(View) 간의 상하관계에 맞춰 배치를 합니다. 이러한 일련의 과정을 전개(Inflate)라 부릅니다. 

setContentView() 함수는 xml 문서를 전개하기 위해 내부적으로 LayoutInflater 클래스를 참조합니다. 


2. 전개자 (Inflater)

XML 문서를 전개(Inflate) 하기 위해서 시스템상으로 제공하는 클래스가 있습니다. 바로 LayoutInflater 클래스로 해당 클래스의 객체를 구하는 방법은 아래 두 가지가 있습니다. 

        LayoutInflater inflater1 = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        LayoutInflater inflater2 = getLayoutInflater();

첫 번째 방법은 getSystemService() 함수를 통해 가져오는 방법입니다. 두 번째는 액티비티 내에서 제공하는 getLayoutInflater() 함수를 통해 받아오는 방법이 있습니다. 

View view  = getLayoutInflater().inflate(R.layout.activity_sub, null);

전개자(Inflater)를 생성하였다면 inflate() 함수를 통해 전개된 뷰(View) 객체를 반환받습니다. 첫 번째 인자로는 XML 레이아웃 리소스 ID를 넘기고 두 번째는 전개할 레이아웃의 최상위 Root ViewGroup으로 설정할 객체를 넘깁니다. 아래는 Inflater를 통해 전개된 뷰(View)를 Dialog 창에 Setting 하여 팝업을 띄우는 예제입니다.

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View view  = getLayoutInflater().inflate(R.layout.activity_sub, null);

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(view);

        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }
}

 


  1. 안드로이드 - Serializable를 활용한 다른 액티비티에 객체(Object) 전달하기

    Date2021.03.31 Views280
    Read More
  2. 안드로이드 - 인텐트(Intent)를 활용한 액티비티(Activity)간 데이터 전달하기

    Date2021.03.31 Views349
    Read More
  3. 안드로이드 - 인텐트(Intent)를 활용한 액티비티(Activity) 생성 및 실행하기

    Date2021.03.31 Views213
    Read More
  4. 안드로이드 - 스타일 리소스(Style Resource) 사용하기 <style>

    Date2021.03.31 Views238
    Read More
  5. 안드로이드 - 색상 리소스 (Color Resource) 추가 </color>

    Date2021.03.31 Views551
    Read More
  6. 안드로이드 - 문자열 배열 리소스 추가하기 <string-array>

    Date2021.03.31 Views811
    Read More
  7. 안드로이드 - 문자열 리소스를 활용한 다국어 지원

    Date2021.03.31 Views282
    Read More
  8. 안드로이드 - 문자열 리소스(Resource) 추가 및 참조하기

    Date2021.03.31 Views906
    Read More
  9. 안드로이드 - 텍스트뷰(TextView) 사용법 정리

    Date2021.03.31 Views1245
    Read More
  10. 안드로이드 - 버튼 이벤트 처리방법 정리 (리스너 구현 및 이벤트 핸들링)

    Date2021.03.31 Views343
    Read More
  11. 안드로이드 - 익명 클래스(Anonymous Class) 사용법

    Date2021.03.31 Views281
    Read More
  12. setContentView()와 레이아웃 전개자(LayoutInflater)

    Date2021.03.31 Views266
    Read More
  13. 버튼 이벤트 추가하기

    Date2021.03.31 Views191
    Read More
  14. 안드로이드 가상머신 실행 속도 빠르게 하기

    Date2021.03.31 Views228
    Read More
  15. 버튼 이벤트

    Date2021.03.31 Views205
    Read More
  16. App 실행

    Date2021.03.31 Views244
    Read More
  17. Virtual Device , 디자인 화면

    Date2021.03.31 Views260
    Read More
  18. Java에서 XML 불러와서 동적 변화 주기

    Date2021.03.31 Views288
    Read More
  19. 버튼 생성, 이벤트 처리

    Date2021.03.31 Views236
    Read More
  20. 안드로이드 - 에디트텍스트(EditText) 사용법 정리

    Date2021.03.29 Views2752
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved