메뉴 건너뛰기

조회 수 269 추천 수 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. Effects - Animate() 메서드 (여러가지 효과 동시 처리)

    Date2014.10.16 Views30776
    Read More
  2. 안드로이드와 mysql 연동시키기. php 와 json 사용

    Date2015.07.16 Views24520
    Read More
  3. [DB] 서버/클라이언트 소켓 통신하기

    Date2015.07.13 Views20589
    Read More
  4. 월별 캘린더에 일정 입력 및 조회 기능 리스트로 추가하기

    Date2015.07.16 Views18567
    Read More
  5. 스토리보드 짜는 방법

    Date2015.07.16 Views15433
    Read More
  6. 카카오톡 대화내용 가져오기(sqlite3, chat_logs)

    Date2016.05.26 Views15170
    Read More
  7. 간단한 mp3 플레이어 만들기 , 음악넣기 , 노래재생

    Date2016.06.07 Views14638
    Read More
  8. TextureView를 이용한 카메라 Preview 좌우 반전

    Date2015.06.10 Views14258
    Read More
  9. Android Login and Registration with PHP, MySQL and SQLite

    Date2015.07.16 Views14181
    Read More
  10. 블루투스(Bluetooth) 통신에 대해 알아보자

    Date2015.07.26 Views14056
    Read More
  11. 사진찍기 및 앨범 에서 사진 가져오기!!!

    Date2014.08.28 Views13893
    Read More
  12. EditText의 글자 수 제한 걸기

    Date2015.07.16 Views13885
    Read More
  13. [DB]Android - DB 연동 기술 정리

    Date2015.07.13 Views13810
    Read More
  14. 노티피케이션(Notification) 사용법 / Notification.Builder , NotificationManager

    Date2016.06.10 Views13477
    Read More
  15. 안드로이드] 페이스북 같은 슬라이드 메뉴 만들기

    Date2015.12.15 Views12550
    Read More
  16. 안드로이드용 채팅프로그램 클라이언트(java), 서버(c#) 소스

    Date2016.05.19 Views11730
    Read More
  17. 안드로이드에서 JSP 를 사용하여 mysql 연동하기

    Date2015.07.16 Views11693
    Read More
  18. WIFI 신호세기 강도 측정하기

    Date2014.08.28 Views11247
    Read More
  19. 블루투스 및 비콘 관련 정리

    Date2015.07.26 Views10837
    Read More
  20. Android 간단한 회원 가입 폼 만들기 for Mac (PHPMyAdmin 이용)

    Date2015.07.10 Views10516
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved