English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
앱에서는 때로는 자주 사용되지 않는 복잡한 레이아웃이 있습니다. 필요할 때만 로드하면 메모리 소비를 줄일 수 있으며, 동시에 인터페이스 렌더링 속도를 높일 수 있습니다.
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에 관한 것입니다. 여러분이 어떤 질문이나 의문이 있으면 댓글을 달아 주세요. 저는 여러분의 질문에 적시에 답변 드리겠습니다. 여기서 또한呐喊 강의 사이트에 대한 여러분의 지지에 깊이 감사드립니다!