Menunda pemuatan tampilan

Terkadang tata letak Anda memerlukan tampilan yang kompleks yang jarang digunakan. Baik berupa detail item, indikator progres, maupun pesan urungkan, Anda dapat mengurangi penggunaan memori dan mempercepat rendering dengan memuat tampilan hanya jika diperlukan.

Menunda pemuatan resource adalah teknik penting yang dapat digunakan saat Anda memiliki tampilan kompleks yang mungkin diperlukan aplikasi Anda pada masa mendatang. Anda dapat mengimplementasikan teknik ini dengan menentukan ViewStub untuk tampilan yang kompleks dan jarang digunakan tersebut.

Menentukan ViewStub

ViewStub adalah tampilan ringan tanpa dimensi yang tidak menggambar apa pun atau berpartisipasi dalam tata letak. Dengan demikian, elemen ini mudah di-inflate dan tidak memerlukan banyak resource dalam hierarki tampilan. Setiap ViewStub hanya perlu menyertakan atribut android:layout untuk menentukan tata letak yang akan di-inflate.

ViewStub berikut adalah untuk overlay status progres transparan. Elemen ini hanya terlihat saat item baru sedang diimpor ke dalam aplikasi.

<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" />

Memuat Tata Letak ViewStub

Saat Anda ingin memuat tata letak yang ditentukan oleh ViewStub, setel agar terlihat dengan memanggil setVisibility(View.VISIBLE) atau inflate().

Kotlin

findViewById<View>(R.id.stub_import).visibility = View.VISIBLE
// or
val importPanel: View = findViewById<ViewStub>(R.id.stub_import).inflate()

Java

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

Catatan: Metode inflate() menampilkan View yang di-inflate setelah selesai agar Anda tidak perlu memanggil findViewById() jika perlu berinteraksi dengan tata letak.

Setelah terlihat/di-inflate, elemen ViewStub tidak lagi menjadi bagian dari hierarki tampilan. Elemen ini diganti dengan tata letak yang di-inflate dan ID untuk tampilan root tata letak tersebut adalah yang ditentukan oleh atribut android:inflatedId ViewStub. (ID android:id yang ditentukan untuk ViewStub hanya valid hingga tata letak ViewStub terlihat/di-inflate.)

Catatan: Salah satu kekurangan ViewStub saat ini adalah tidak adanya dukungan untuk <merge> di tata letak yang akan di-inflate.

Untuk informasi tambahan tentang topik ini, lihat Mengoptimalkan dengan stub (postingan blog).