English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Android 레이아웃 성능 최적화: 필요할 때만 View 로드

앱에서는 때로는 자주 사용되지 않는 복잡한 레이아웃이 있습니다. 필요할 때만 로드하면 메모리 소비를 줄일 수 있으며, 동시에 인터페이스 렌더링 속도를 높일 수 있습니다.

ViewStub 정의

ViewStub는 무게가輕い View입니다. 높이와 너비가 없으며 어떤 것도 그려지지 않습니다. 따라서 로드와 해제 비용이 매우 낮습니다. 각 ViewStub는 android:layout 속성을 사용하여 로드할 레이아웃을 지정할 수 있습니다.

이 ViewStub는 반투명한 ProgressBar를 로드하기 위해 사용됩니다. 새 작업이 시작될 때만 표시됩니다.

<ViewStub
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"
android:layout="@layout/progress_overlay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />

ViewStub 로드

ViewStub이 지정한 레이아웃을 로드할 때 setVisibility(View.VISIBLE) 메서드나 inflate() 메서드를 사용할 수 있습니다. 두 메서드는 같은 효과를 가집니다.

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// 또는
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

주의: inflate() 메서드는 로드가 완료되면 View를 반환합니다. 따라서 이 레이아웃의 Root View를 찾기 위해 findViewById()를 사용하지 않아도 됩니다.
ViewStub이 관리하는 View가 로드되면 ViewStub은 더 이상 View 레이어의 일부가 아닙니다. 로드된 레이아웃으로 대체되고, 레이아웃의 ID는 ViewStub의 android:inflatedId 속성에 지정된 ID로 변경됩니다.

주의: ViewStub의 단점은 현재 로드할 레이아웃의 root View가 <merge가 아니라는 것입니다./> 태그.

위에서 설명한 것은 저가 여러분께 소개한 안드로이드 레이아웃 성능 최적화 중 필요에 따라 로드하는 View에 관한 것입니다. 여러분이 어떤 질문이나 의문이 있으면 댓글을 달아 주세요. 저는 여러분의 질문에 적시에 답변 드리겠습니다. 여기서 또한呐喊 강의 사이트에 대한 여러분의 지지에 깊이 감사드립니다!

좋아하는 것