默认情况下,自定义标签页作为全窗口 activity 启动。在 Chrome 中启动 107,您可以使用部分自定义标签页在 竖屏模式,让用户可以通过与您的应用互动来同时处理多项任务, 查看网页内容。用户可通过拖动鼠标将自定义标签页展开至全屏 向上拖动工具栏手柄,并拖动 。
<ph type="x-smartling-placeholder">![底部工作表部分标签的屏幕截图](https://developer.chrome.google.cn/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-ff19cab6a28dd.png?authuser=7&hl=ro)
对于大屏设备或横屏模式的设备,从 Chrome 120 开始, 可指定最大启动宽度,以便在侧面显示部分自定义标签页 工作表。通过设置断点,您可以决定何时启动部分自定义 在底部或侧边工作表中按 Tab 键。
<ph type="x-smartling-placeholder">![侧边工作表部分标签的屏幕截图](https://developer.chrome.google.cn/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-sidesheet.jpg?authuser=7&hl=ro)
前提条件
若要使用部分自定义标签页,您需要:
使用
CustomTabsServiceConnection
启动新的浏览器会话 并将其传递给自定义标签页 intent,或者
如果需要快速启动服务以防服务,请结合使用这两种方法 尚未建立连接。
配置底部动作条
若要将自定义标签页变为部分自定义标签页,请定义初始启动高度
(以像素为单位),具体方法是调用 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);
}
});
}
接下来,不妨了解如何在自定义标签页中衡量用户互动情况。