본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Android Layout Tricks #4 : Optimize with stubs ( 성능 최적화 )

by 돼지왕 왕돼지 2012. 11. 28.
반응형






Android Layout Tricks #4 : Optimize with stubs

* 원문에서는 Tricks #3 으로 제공되지만, 다른 article 과의 연관성을 고려하여 #4 로 명명하였다.

- android 
 ViewStub 이라는 특별한 widget 을 제공한다. 이 녀석은 거의 쓰이지 않는 view 들에 대해 이점을 제공한다.


- ViewStub 은 매우 가벼운 view 이다. 이 녀석은 dimension 도 없고, 어떤 것도 그리지 않는다. 다시 말해 ViewStub 은 매우 가볍게 hierarchy 안에 포함될 수도 있고, inflate 도 무지 쉽게 될 수 있다.


- ViewStub 을 심플하게 그러나 직관적으로 이야기하자면 "lazy include" 라고 할 수 있다. ViewStub 은 user interface 에 필요할 때만 inflate되고 추가될 수 있다.


- ViewStub 을 사용하기 위해서는 android:id 와 android:layout, 그리고 android:inflatedId 를 명시해 주어야 한다. 이 inflatedId 는 include 하는 view 의 root 의 속성을 override 할는데 사용된다.


- ViewStub 을 inflate 하기 위해서는 inflate 만 호출해주면 된다. 혹은 visibility 를 VISIBLE, INVISIBLE 로 표시해주면 된다. 


((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);

// or

View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();


- 확실히 알고 있어야 하는 것은, ViewStub 이 inflate 가 되면 view hierarchy 에서 ViewStub 이 사라진다. Program 으로 Runtime에 자주 쓰이지 않는 녀석을 필요할 때마다 inflate 하고 add 하던 작업을 ViewStub 으로 바꾸면 아주 간단하며, 성능상의 이슈도 초래하지 않는다.
 

ViewStub inflate 전

ViewStub inflate 후


- ViewStub 의 단점은 현재 <merge/> 태그를 지원하지 않는다는 점이다.



도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x )



반응형

댓글