Multitasking mit teilweisen benutzerdefinierten Tabs

Benutzerdefinierte Tabs werden standardmäßig als Vollbildaktivität gestartet. Starten in Chrome können Sie teilweise benutzerdefinierte Tabs verwenden, um eine andere Höhe für den Start in im Hochformat. So können Nutzer mehrere Dinge gleichzeitig tun, während sie mit der App interagieren, Webinhalte ansehen. Nutzer können den benutzerdefinierten Tab durch Ziehen des Symbolleistenziehpunkts nach oben und stellen Sie die anfängliche Höhe durch Ziehen des Ziehpunkt nach unten.

<ph type="x-smartling-placeholder">
</ph> Screenshot des Tabs „Teilweise“ am unteren Rand
Teilweise benutzerdefinierter Tab in einem Tabellenblatt am unteren Rand

Auf großen Bildschirmen oder Geräten im Querformat, ab Chrome 120, eine maximale Breite für den Start angeben, damit ein Teil eines benutzerdefinierten Tabs auf einer Seite angezeigt wird. Tabellenblatt. Durch das Festlegen eines Haltepunkts können Sie entscheiden, wann ein benutzerdefinierter Teil einer benutzerdefinierten Tabulatortaste drücken Sie in einer Ansicht am unteren Rand oder in einer Seitenansicht.

<ph type="x-smartling-placeholder">
</ph> Screenshot des Tabs „Teilweise“ in der Seitenleiste
Teilweise benutzerdefinierter Tab in einer Seitentabelle

Vorbereitung

Wenn du benutzerdefinierte Tabs nur teilweise verwenden möchtest, musst du Folgendes tun:

Kombinieren Sie beide Ansätze, wenn Sie einen schnellen Start wünschen, falls der Dienst Verbindung wurde noch nicht hergestellt.

Ansicht am unteren Rand konfigurieren

Wenn Sie einen benutzerdefinierten Tab in einen partiellen benutzerdefinierten Tab umwandeln möchten, legen Sie die Höhe für den anfänglichen Start fest in Pixeln, indem die Methode der Klasse CustomTabBuilder aufgerufen wird setInitialActivityHeightPx() . Standardmäßig kann die Größe des benutzerdefinierten Tabs angepasst werden. Sie können jedoch ACTIVITY\_HEIGHT\_FIXED um dieses Verhalten zu deaktivieren:

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

Seitenblatt konfigurieren

Um das Verhalten der Seitenleiste zu konfigurieren, definieren Sie die Breite des anfänglichen Starts in Pixeln, indem Sie die Methode CustomTabBuilder der Klasse setInitialActivityWidthPx() .

Standardmäßig kann die Größe des benutzerdefinierten Tabs angepasst werden. Sie können jedoch ACTIVITY\_HEIGHT\_FIXED um dieses Verhalten zu deaktivieren:

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

Der benutzerdefinierte Tab verhält sich wie eine seitliche Ansicht, wenn die Bildschirmbreite größer als Breakpoint-Wert, der von setActivitySideSheetBreakpointDp() von Google Tabellen verwendet werden. Wenn die Bildschirmbreite größer als x ist, verhält sich der benutzerdefinierte Tab wie eine seitliche Ansicht. Andernfalls verhält sie sich wie ein Blatt am unteren Rand. Wenn kein Haltepunkt angegeben ist, muss die Browserimplementierung als Standardwert 840dp festgelegt werden. Wenn x auf <600dp gesetzt ist, sollte die Browserimplementierung diese standardmäßig verwenden: 600dp

Einen Teil eines benutzerdefinierten Tabs mit einer bestehenden Sitzung starten

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

Teilweisen benutzerdefinierten Tab über startActivityForResult öffnen

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

Nächster Teil: Nutzerinteraktionen auf Ihren benutzerdefinierten Tabs messen