根據預設,「自訂分頁」會以完整視窗活動的形式啟動。正在透過 Chrome 開啟 107 時,您可以使用部分自訂分頁,在 直向模式,可讓使用者在同時與應用程式互動時,同時執行多項工作 查看網路內容使用者可以拖曳自訂分頁,將自訂分頁展開為全螢幕 工具列可拖曳 控制器
![底部功能表的螢幕截圖](https://developer.chrome.google.cn/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-ff19cab6a28dd.png?authuser=002&hl=zh-tw)
針對大螢幕或橫向模式的裝置 (從 Chrome 120 開始), 可指定的啟動寬度上限,在側邊顯示部分自訂分頁 工作表。設定中斷點後,就能決定何時啟動部分自訂 在底部或側邊功能表中,使用 Tab 鍵。
![側邊工作表的螢幕截圖](https://developer.chrome.google.cn/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-sidesheet.jpg?authuser=002&hl=zh-tw)
修課條件
如要使用部分「自訂分頁」,你必須:
使用
CustomTabsServiceConnection
啟動新的瀏覽器工作階段 然後傳遞至「Custom Tabs」意圖開始使用「自訂分頁」活動
startActivityForResult()
。
如果您希望快速啟動,又能滿足服務需求,可以結合使用這兩種方法 尚未建立連線。
設定底部功能表
如要將「自訂分頁」轉換成部分「自訂分頁」,請定義初始啟動高度
呼叫 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);
當螢幕寬度大於
設定每個 Pod 的
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);
}
});
}
下一步:瞭解如何在「自訂」分頁中評估使用者參與度。