根據預設,「自訂分頁」會以完整視窗的活動的形式啟動。從 Chrome 107 開始,您可以使用部分自訂分頁,在直向模式下指定不同的啟動高度,讓使用者在檢視網路內容時,能與應用程式互動,進而多工處理。使用者可以將工具列控點向上拖曳,藉此將自訂分頁展開為全螢幕,向下拖曳把手可還原初始啟動高度。
從 Chrome 120 開始,對於處於橫向模式的大螢幕或裝置,您可以指定啟動寬度上限,以便在側邊功能表中顯示部分「自訂」分頁。設定中斷點之後,就能決定何時要在底部或側邊功能表中啟動部分自訂分頁。
必要條件
如要使用部分「自訂分頁」,您必須:
使用
CustomTabsServiceConnection
啟動新的瀏覽器工作階段,並傳送至自訂分頁意圖,或是使用
startActivityForResult()
啟動「自訂分頁」活動。
如果您希望在服務連線尚未建立的情況下快速啟動,請結合這兩種方法。
設定底部功能表
如要將 Custom Tab 轉換為部分「Custom」分頁,請呼叫 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() 設定的中斷點值,Custom Tab 就會以側邊功能表運作。如果螢幕寬度高於 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);
}
});
}
接下來:瞭解如何在自訂分頁中評估使用者參與度。