Multi-tasking dengan Tab Khusus Parsial

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 banyak 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 tuas ke bawah.

Screenshot Tab Parsial sheet bawah
Tab Kustom 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 jeda, Anda dapat memutuskan waktu untuk meluncurkan Tab Khusus sebagian di bagian bawah atau sheet samping.

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

Prasyarat

Untuk dapat menggunakan Tab Khusus sebagian, Anda harus:

Gabungkan kedua pendekatan ini jika Anda menginginkan startup cepat jika koneksi layanan belum dibuat.

Mengonfigurasi sheet bawah

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

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

Mengonfigurasi sheet samping

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

Secara default, Tab Kustom 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 yang harus ditetapkan sebagai nilai default 840dp. Jika x disetel ke <600dp, implementasi browser harus menyetelnya secara default ke 600dp.

Meluncurkan Tab Khusus sebagian dengan sesi yang 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 interaksi pengguna di Tab Khusus Anda.