Multi-tasking dengan Tab Khusus Parsial

Sebastian Benz
Sebastian Benz

Secara default, Tab Khusus diluncurkan sebagai aktivitas jendela penuh. Mulai Chrome 107, Anda dapat menggunakan Tab Khusus parsial untuk menentukan tinggi peluncuran yang berbeda dalam mode potret sehingga pengguna dapat melakukan beberapa hal sekaligus dengan berinteraksi dengan aplikasi Anda saat melihat konten web. Pengguna dapat meluaskan Tab Khusus ke layar penuh dengan menarik gagang toolbar ke atas dan memulihkan tinggi peluncuran awal dengan menarik gagang ke bawah.

Screenshot Tab Parsial sheet bawah
Tab Khusus Parsial di sheet bawah.

Untuk perangkat layar besar atau perangkat dalam mode lanskap, mulai Chrome 120, Anda dapat menentukan lebar peluncuran maksimum untuk menampilkan Tab Khusus sebagian di sheet samping. Dengan menetapkan titik henti sementara, Anda dapat memutuskan kapan harus meluncurkan Tab Khusus sebagian di sheet bawah atau samping.

Screenshot Tab Parsial sheet samping
Tab Khusus Sebagian di sheet samping.

Prasyarat

Agar dapat menggunakan Tab Khusus sebagian, Anda perlu:

Gabungkan kedua pendekatan tersebut jika Anda menginginkan startup yang cepat apabila koneksi layanan belum dibuat.

Mengonfigurasi sheet bawah

Untuk mengubah Tab Khusus menjadi Tab Khusus sebagian, tentukan tinggi peluncuran awal dalam piksel dengan memanggil metode setInitialActivityHeightPx() class CustomTabBuilder. Secara default, Tab Khusus sebagian dapat diubah ukurannya, tetapi Anda dapat meneruskan ACTIVITY\_HEIGHT\_FIXED untuk menonaktifkan perilaku ini:

new CustomTabsBuilder().setInitialActivityHeightPx(
    400,
    ACTIVITY_HEIGHT_FIXED
);

Mengonfigurasi side sheet

Untuk mengonfigurasi perilaku sheet samping, tentukan lebar peluncuran awal dalam piksel dengan memanggil metode setInitialActivityWidthPx() class CustomTabBuilder.

Secara default, Tab Khusus sebagian dapat diubah ukurannya, tetapi Anda dapat meneruskan ACTIVITY\_HEIGHT\_FIXED untuk menonaktifkan perilaku ini:

  CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(session)
        .setInitialActivityHeightPx(400)
        .setInitialActivityWidthPx(400);
        .setActivitySideSheetBreakpointDp(800);

Tab Khusus akan berperilaku sebagai sheet samping jika lebar layar lebih besar dari nilai titik henti sementara yang ditetapkan oleh setActivitySideSheetBreakpointDp(). Jika lebar layar lebih tinggi dari x, Tab Khusus akan berperilaku sebagai sheet samping. Jika tidak, Tab Khusus akan berperilaku sebagai sheet bawah. Jika tidak ada titik henti sementara yang ditentukan, tetapkan implementasi browser sebagai nilai default 840dp. Jika x ditetapkan ke <600dp, implementasi browser harus menyetelnya secara default ke 600dp.

Meluncurkan Tab Khusus sebagian dengan sesi yang sudah ada

CustomTabsSession customTabsSession;

// ...

CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(customTabsSession)
   .setInitialActivityHeightPx(500)
    .setInitialActivityWidthPx(400);
    .setActivitySideSheetBreakpointDp(800);
   .setCloseButtonPosition(CustomTabsIntent.CLOSE_BUTTON_POSITION_END)
   // ...
   .build();

customTabsIntent.launchUrl(context, Uri.parse(url))

Luncurkan Tab Khusus sebagian melalui startActivityForResult

private ActivityResultLauncher<String> mCustomTabLauncher = registerForActivityResult(new ActivityResultContract<String, Integer>() {
    @Override
    public Integer parseResult(int statusCode, @Nullable Intent intent) {
        return statusCode;
    }

    @NonNull
    @Override
    public Intent createIntent(@NonNull Context context, String url) {
        CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(customTabsSession)
                .setInitialActivityHeightPx(500)
                .setInitialActivityWidthPx(400);
                .setActivitySideSheetBreakpointDp(800);
                .setCloseButtonPosition(CustomTabsIntent.CLOSE_BUTTON_POSITION_END)
                .setToolbarCornerRadiusDp(10);
        Intent customTabsIntent = builder.build().intent;
        customTabsIntent.setData(Uri.parse(url));
        return customTabsIntent;
    }
}, new ActivityResultCallback<Integer>() {
    @Override
    public void onActivityResult(Integer statusCode) {
       // ...
    }
});

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    Button selectButton = findViewById(R.id.select_button);
    selectButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            mCustomTabLauncher.launch(customTabsIntent.intent);
        }
    });
}

Selanjutnya: pelajari cara mengukur engagement pengguna di Tab Khusus.