Multi-tasking dengan Tab Khusus Parsial

Secara default, Tab Khusus diluncurkan sebagai aktivitas jendela penuh. Dimulai di Chrome 107, Anda dapat menggunakan Tab Khusus parsial untuk menentukan tinggi peluncuran yang berbeda di mode potret sehingga pengguna dapat melakukan multitasking dengan berinteraksi dengan aplikasi Anda saat melihat konten web. Pengguna dapat memperluas Tab Khusus ke layar penuh dengan menariknya menangani toolbar ke atas dan memulihkan tinggi peluncuran awal dengan menarik 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 sebagian Tab Khusus di sisi {i>sheet<i}. Dengan menetapkan titik jeda, Anda dapat memutuskan kapan harus meluncurkan Iklan kustom parsial Tekan Tab di bagian bawah atau sheet samping.

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

Prasyarat

Agar dapat menggunakan Tab Khusus sebagian, Anda harus:

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

Mengonfigurasi {i>sheet bawah<i}

Untuk mengubah Tab Khusus menjadi Tab Khusus sebagian, tentukan tinggi peluncuran awal dalam piksel dengan memanggil CustomTabBuilder class setInitialActivityHeightPx() . Secara default, sebagian Tab Khusus 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 class CustomTabBuilder setInitialActivityWidthPx() .

Secara default, sebagian Tab Khusus 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 lembar 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 sisi {i>sheet<i}, jika tidak, ia akan berperilaku sebagai {i>sheet<i} bawah. Jika tidak ada titik henti sementara ditetapkan, tetapkan implementasi browser harus ditetapkan sebagai nilai default 840dp. Jika x disetel ke <600dp, implementasi browser harus ditetapkan secara default ke 600dp.

Meluncurkan Tab Khusus parsial 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 interaksi pengguna di Tab Khusus.