Per impostazione predefinita, le schede personalizzate vengono avviate come attività a finestra intera. A partire da Chrome 107, puoi utilizzare le schede personalizzate parziali per specificare un'altezza di avvio diversa in modalità verticale in modo che gli utenti possano svolgere più attività contemporaneamente interagendo con la tua app durante la visualizzazione di contenuti web. Gli utenti possono espandere la Scheda personalizzata a schermo intero trascinando la maniglia della barra degli strumenti verso l'alto e ripristinare l'altezza iniziale del lancio trascinando il punto di manipolazione verso il basso.
![Screenshot di una scheda parziale nel riquadro inferiore](https://developer.chrome.google.cn/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-ff19cab6a28dd.png?authuser=9&hl=it)
Per gli schermi di grandi dimensioni o i dispositivi in modalità Orizzontale, a partire da Chrome 120 puoi specificare una larghezza massima di avvio per mostrare una scheda personalizzata parziale in un foglio laterale. Impostando un punto di interruzione, puoi decidere quando avviare una Scheda personalizzata parziale in un riquadro inferiore o laterale.
![Screenshot di una scheda parziale del riquadro laterale](https://developer.chrome.google.cn/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-sidesheet.jpg?authuser=9&hl=it)
Prerequisito
Per poter utilizzare le schede personalizzate parziali, devi:
avviare una nuova sessione del browser utilizzando un
CustomTabsServiceConnection
e trasmetterla all'intent Schede personalizzate oavviare l'attività Scheda personalizzata utilizzando
startActivityForResult()
.
Combina entrambi gli approcci se vuoi un avvio rapido nel caso in cui la connessione al servizio non sia stata ancora stabilita.
Configurazione del riquadro inferiore
Per trasformare una Scheda personalizzata in una Scheda personalizzata parziale, definisci l'altezza di avvio iniziale in pixel
chiamando il metodo
setInitialActivityHeightPx()
della classe CustomTabBuilder
. Per impostazione predefinita, la Scheda personalizzata parziale è ridimensionabile, ma puoi passare ACTIVITY\_HEIGHT\_FIXED
per disattivare questo comportamento:
new CustomTabsBuilder().setInitialActivityHeightPx(
400,
ACTIVITY_HEIGHT_FIXED
);
Configurazione del riquadro laterale
Per configurare il comportamento del foglio laterale, definisci la larghezza di avvio iniziale in pixel
richiamando il metodo
setInitialActivityWidthPx()
della classe CustomTabBuilder
.
Per impostazione predefinita, la Scheda personalizzata parziale è ridimensionabile, ma puoi passare ACTIVITY\_HEIGHT\_FIXED
per disattivare questo comportamento:
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(session)
.setInitialActivityHeightPx(400)
.setInitialActivityWidthPx(400);
.setActivitySideSheetBreakpointDp(800);
La Scheda personalizzata si comporterà come un riquadro laterale se la larghezza dello schermo è superiore al valore del punto di interruzione impostato da setActivitySideSheetBreakpointDp(). Se la larghezza dello schermo è superiore a x
, la Scheda personalizzata si comporterà come un foglio laterale, altrimenti si comporterà come un riquadro inferiore. Se non viene specificato alcun punto di interruzione, imposta l'implementazione del browser come valore predefinito 840dp
.
Se il criterio x
viene impostato su <600dp
, l'implementazione del browser dovrebbe essere impostata su 600dp
per impostazione predefinita.
Lancia una scheda personalizzata parziale con una sessione esistente
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))
Avvia una scheda personalizzata parziale tramite 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);
}
});
}
Ora scopri come misurare il coinvolgimento degli utenti nelle schede personalizzate.