앱 만들기/안드로이드 study

안드로이드 Inflate 이란?

나도처음이야 2020. 3. 27.
반응형

Inflate 란 부풀게 하다란 뜻이다.

안드로이드에서 Inflate의 정의는 xml 에 표기된 레이아웃들을 메모리에 객체화시키는 행동이다.

쉽게 말해서, XML 코드들을 객체화 해서 코드에서 사용하기 위함이다.

 

기본적으로, 안드로이드에서는 화면(Activity 단위)을 하나 만들면

소스 코드 하나와 화면을 구성하는 XML 하나 이렇게 2개가 생성된다.

이때, setContentView() 함수가 바로 자동으로 만들어진 XML을 객체화시키는 Inflate 동작이다.

 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 버튼 객체를 가져온다.
        Button btn1 = findViewbyId(R.id.btn1);
    }
}

 

그렇기에 우리는 setContenView() 함수 밑에서 XML 에 배치했던 UI 요소들을 맘껏 끌어와 쓸 수 있다.

바로 메모리에 올라가 객체와 되었기 때문이다. 위의 버튼 UI 처럼 말이다.

...

 

그런데, 오늘 말하고자 하는 inflate 는 다른 상황일 때를 설명코자 한다.

만약, 다른 화면을 구성하는 XML 을 불러오고 싶다면.. 어떻게 해야 될까?

이런 경우는 여러가지 상황이 있을 수 있다. 자식 Layout XML을 따로 만들어서 관리하는 경우가 될 수 도 있고

특정 XML의 값들을 참조하기 위해서도 가능하다. 

어찌 됐든, 자동으로 생성된 XML 이 아닌 user 가 추가적으로 만든 XML을 객체화시키기 위해서도 Inflate 과정이 필요하다. 

Inflate를 하는 방법은 여러 방식이 있지만, 대표적으로 하기처럼 작업을 하면 손쉽다.

 LayoutInflater inflater = getLayoutInflater();
        View v1 = inflater.inflate(R.layout.activity_flag_detail, null);
        View v2 = inflater.inflate(R.layout.activity_main, null);
        View v3 = inflater.inflate(R.layout.row, null);

여러 XML 을 inflater 해서 최상위 부모 참조 변수 View에 담아둔다.

과정까지가 바로 메모리를 객체위에 올려놓은 과정이다.

끝이다.

그럼 이제 여러분들은 마음껏 각 XML의 UI 객체에 접근이 가능하다.

하기처럼...

 

TextView text= (TextView)v1.findViewById(R.id.textView);

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

ImageView image= (ImageView)v1.findViewById(R.id.image);

 

 

텍스트 뷰, 버튼, 이미지 값들을 내가 원하는 대로 가져다 쓸 수 있다.

기본적으로 inflate라는 개념을 이해하고 그 뒤 API 등을 활용해서 코드에 적용 하는 것이 손쉬운 방법이란 생각이 든다. 그럼 굳이 어려운 함수들을 외워서 이건 왜 이렇지 하면서 삽질하는 경우가 줄어들기 때문이다. 

감사합니다. 좋은 하루보내세요 ^^*

 

퀴즈 게임을 좋아하신다면,

제가 한땀한땀 제작한

세계의 국기 ☆ 국기 퀴즈 게임 을 추천드립니다.

감사합니다.

 

 

세계의 국기 ☆ 국기 퀴즈 게임 - Google Play 앱

세계 국기 앱 입니다. 대륙 별 세계 국기와 수도, 나라 위치 , 인구, 통화 정보를 손쉽게 알 수 있습니다. 6대륙(아시아,유럽,북아메리카,남아메리카,오세아나이,아프리카) 의 세계국기에 대해서 �

play.google.com

 

 

반응형

댓글