使用部分自訂分頁進行多工作業

根據預設,自訂分頁會以全視窗活動啟動。從 Chrome 107 開始,您可以使用部分自訂分頁在直向模式下指定不同的啟動高度,讓使用者能夠在瀏覽網路內容時與應用程式互動,進而執行多項工作。使用者可以將工具列控點向上拖曳,以全螢幕將自訂分頁展開為全螢幕,並拖曳手柄,將初始的啟動高度還原。

底部工具列「Partial」分頁的螢幕截圖
底部選單中的部分自訂分頁。

從 Chrome 120 開始的大螢幕或橫向模式下的裝置,您可以指定啟動寬度上限,在側邊功能表中顯示部分自訂分頁。您可以設定中斷點,決定何時要在底部或側邊資訊欄中啟動部分自訂分頁。

側邊工作表的螢幕截圖
側邊工作表的部分自訂分頁。

修課條件

如要使用部分自訂分頁,您必須:

如果您希望在服務連線尚未建立的情況下快速啟動,請同時採用這兩種方法。

設定底部功能表

如要將自訂分頁轉換為部分自訂分頁,請呼叫 CustomTabBuilder 類別的 setInitialActivityHeightPx() 方法,以像素為單位定義初始啟動高度。根據預設,部分自訂分頁可調整大小,但您可以傳遞 ACTIVITY\_HEIGHT\_FIXED 來停用這項行為:

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

設定側邊面板

如要設定側邊區行為,請呼叫 CustomTabBuilder 類別的 setInitialActivityWidthPx() 方法,以像素為單位定義初始啟動寬度。

根據預設,部分自訂分頁可調整大小,但您可以傳遞 ACTIVITY\_HEIGHT\_FIXED 來停用這項行為:

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

如果螢幕寬度大於 setActivitySideSheetBreakpointDp() 所設定的斷點值,自訂分頁就會以側邊資訊列的形式顯示。如果螢幕寬度高於 x,自訂分頁就會以側邊資訊列的形式顯示,否則會以底部資訊列的形式顯示。如果未指定中斷點,請將瀏覽器實作設為預設值 840dp。如果 x 設為 <600dp,瀏覽器實作應預設為 600dp

使用現有工作階段啟動部分自訂分頁

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

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

下一步:瞭解如何在「自訂」分頁中評估使用者參與度