Domyślnie karty niestandardowe uruchamiają się w trybie całego okna. Począwszy od Chrome 107, możesz używać częściowych kart niestandardowych, aby określić inną wysokość uruchamiania w trybie pionowym. Dzięki temu użytkownicy będą mogli wykonywać wiele zadań jednocześnie, korzystając z aplikacji podczas przeglądania treści internetowych. Użytkownicy mogą rozwinąć kartę niestandardową do pełnego ekranu, przeciągając uchwyt paska narzędzi w górę i przywrócić początkową wysokość uruchamiania, przeciągając uchwyt w dół.
![Zrzut ekranu karty dolnej z kartą częściową](https://developer.chrome.com/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-ff19cab6a28dd.png?authuser=7&hl=pl)
W przypadku dużych ekranów lub urządzeń w trybie poziomym (począwszy od Chrome 120) możesz określić maksymalną szerokość uruchamiania, aby w arkuszu bocznym wyświetlała się tylko część karty niestandardowej. Ustawiając punkt przerwania, możesz zdecydować, kiedy wyświetlić część karty niestandardowej u dołu lub w arkuszu bocznym.
![Zrzut ekranu przedstawiający arkusz boczny karty częściowej](https://developer.chrome.com/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-sidesheet.jpg?authuser=7&hl=pl)
Warunek wstępny
Aby móc korzystać z części kart niestandardowych:
rozpocząć nową sesję przeglądarki za pomocą elementu
CustomTabsServiceConnection
i przekazać ją do intencji kart niestandardowychuruchomić aktywność na karcie niestandardowej za pomocą polecenia
startActivityForResult()
.
Połącz oba te podejścia, jeśli chcesz szybko uruchamiać działanie, jeśli połączenie z usługą nie zostało jeszcze nawiązane.
Konfigurowanie planszy dolnej
Aby przekształcić kartę niestandardową w częściową kartę niestandardową, określ początkową wysokość uruchamiania w pikselach, wywołując metodę setInitialActivityHeightPx()
klasy CustomTabBuilder
. Domyślnie częściowej karty niestandardowej można zmienić rozmiar, ale możesz przekazać parametr ACTIVITY\_HEIGHT\_FIXED
, aby wyłączyć to zachowanie:
new CustomTabsBuilder().setInitialActivityHeightPx(
400,
ACTIVITY_HEIGHT_FIXED
);
Konfiguruję arkusz boczny
Aby skonfigurować działanie arkusza bocznego, określ początkową szerokość uruchamiania w pikselach, wywołując metodę setInitialActivityWidthPx()
klasy CustomTabBuilder
.
Domyślnie częściowej karty niestandardowej można zmienić rozmiar, ale możesz przekazać parametr ACTIVITY\_HEIGHT\_FIXED
, aby wyłączyć to zachowanie:
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(session)
.setInitialActivityHeightPx(400)
.setInitialActivityWidthPx(400);
.setActivitySideSheetBreakpointDp(800);
Karta niestandardowa będzie działać jak arkusz boczny, jeśli szerokość ekranu jest większa niż wartość punktu przerwania ustawiona w metodzie setActivitySideSheetBreakpointDp(). Jeśli szerokość ekranu jest większa niż x
, karta niestandardowa będzie działać jak arkusz boczny. W przeciwnym razie będzie działać jak arkusz dolny. Jeśli nie został określony żaden punkt przerwania, ustaw implementację przeglądarki jako wartość domyślną 840dp
.
Jeśli x
ma wartość <600dp
, implementacja przeglądarki powinna mieć domyślną wartość 600dp
.
Uruchamianie częściowej karty niestandardowej w istniejącej sesji
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))
Uruchamianie częściowej karty niestandardowej za pomocą polecenia 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);
}
});
}
Kolejny krok: dowiedz się, jak mierzyć zaangażowanie użytkowników za pomocą kart niestandardowych.