Pemuatan Tampilan Tertunda

Terkadang tata letak Anda mungkin memerlukan tampilan kompleks yang jarang digunakan. Entah untuk menampilkan detail item, indikator progres, atau pesan tentang mengurungkan tindakan, Anda dapat mengurangi penggunaan memori dan mempercepat rendering dengan hanya memuat tampilan saat diperlukan saja.

Menunda pemuatan resource adalah teknik penting yang dapat digunakan saat Anda memiliki tampilan kompleks yang mungkin diperlukan aplikasi Anda di 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 diperluas dan tidak memerlukan banyak resource dalam hierarki tampilan. Setiap ViewStub hanya perlu menyertakan atribut android:layout untuk menentukan tata letak yang akan diperluas.

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, tetapkan 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 diperluas setelah selesai. Sehingga Anda tidak perlu memanggil findViewById() jika perlu berinteraksi dengan tata letak.

Setelah terlihat/diperluas, elemen ViewStub tidak lagi menjadi bagian dari hierarki tampilan. Elemen ini diganti dengan tata letak yang diperluas 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/diperluas.)

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

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