Wielozadaniowość dzięki częściowym kartom niestandardowym

Domyślnie karty niestandardowe uruchamiają się w trakcie całego okna. Uruchamiam w Chrome 107, możesz użyć częściowych kart niestandardowych, aby określić inną wysokość uruchamiania w w trybie portretowym, dzięki czemu użytkownicy mogą wykonywać wiele zadań jednocześnie, korzystając z aplikacji przeglądanie treści internetowych. Użytkownicy mogą rozwinąć kartę niestandardową na pełny ekran, przeciągając ją uchwyt paska narzędzi do góry i przywrócić początkową wysokość uruchamiania, przeciągając w dół.

Zrzut ekranu z częściową kartą u dołu
Częściowa karta niestandardowa w arkuszu u dołu.

W przypadku dużych ekranów lub urządzeń w trybie poziomym, począwszy od Chrome 120, można określić maksymalną szerokość uruchamiania, aby wyświetlić z boku część karty niestandardowej arkusza kalkulacyjnego. Po ustawieniu punktu przerwania możesz określić, kiedy chcesz uruchomić częściowy tag niestandardowy Tab u dołu lub na arkuszu bocznym.

Zrzut ekranu z częściową kartą w arkuszu bocznym
Częściowa karta niestandardowa w arkuszu bocznym.
.

Warunek wstępny

Aby korzystać z części kart niestandardowych, musisz:

Połącz oba podejścia, jeśli chcesz szybko uruchomić usługę w przypadku usługi nie nawiązano jeszcze połączenia.

Konfiguruję planszę dolną

Aby przekształcić kartę niestandardową w częściową kartę niestandardową, określ jej początkową wysokość w pikselach przez wywołanie klasy CustomTabBuilder setInitialActivityHeightPx(). . Domyślnie częściową kartę niestandardową można zmienić, ACTIVITY\_HEIGHT\_FIXED aby wyłączyć to działanie:

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

Konfigurowanie arkusza bocznego

Aby skonfigurować działanie arkusza bocznego, określ szerokość początkowego uruchamiania w pikselach przez wywołuje metodę CustomTabBuilder zajęć setInitialActivityWidthPx(). .

Domyślnie częściową kartę niestandardową można zmienić, ACTIVITY\_HEIGHT\_FIXED aby wyłączyć to działanie:

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

Karta niestandardowa będzie działać jako arkusz boczny, jeśli szerokość ekranu jest większa niż wartość punktu przerwania ustawiona przez setActivitySideSheetBreakpointDp(). Jeśli szerokość ekranu jest większa niż x, karta niestandardowa będzie działać jak bok w przeciwnym razie będzie działał jako plansza dolna. Jeśli brak punktu przerwania ustaw implementację przeglądarki na wartość domyślną 840dp. Jeśli zasada x ma wartość <600dp, implementacja przeglądarki powinna mieć wartość domyślną. 600dp

Uruchamianie częściowej karty niestandardowej z dotychczasową sesją

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))

Uruchom częściowo kartę niestandardową przez 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 na kartach niestandardowych.