به طور پیش فرض، Custom Tabs به عنوان یک فعالیت تمام پنجره راه اندازی می شود. با شروع در Chrome 107، میتوانید از برگههای سفارشی جزئی برای تعیین ارتفاع راهاندازی متفاوت در حالت عمودی استفاده کنید تا کاربران بتوانند با تعامل با برنامه شما در حین مشاهده محتوای وب، چند کار را انجام دهند. کاربران می توانند با کشیدن دسته نوار ابزار به بالا، برگه سفارشی را به تمام صفحه گسترش دهند و با کشیدن دسته به پایین، ارتفاع راه اندازی اولیه را بازیابی کنند.
برای نمایشگرها یا دستگاههای بزرگ در حالت افقی، از Chrome 120 شروع میشود، میتوانید حداکثر عرض راهاندازی را برای نمایش یک برگه سفارشی جزئی در یک صفحه جانبی مشخص کنید. با تنظیم نقطه شکست، میتوانید تصمیم بگیرید که چه زمانی یک برگه سفارشی جزئی را در پایین یا یک صفحه کناری راهاندازی کنید.
پیش نیاز
برای اینکه بتوانید از برگه های سفارشی جزئی استفاده کنید، باید:
یک جلسه مرورگر جدید را با استفاده از
CustomTabsServiceConnection
شروع کنید و آن را به برنامه Custom Tabs ارسال کنید یافعالیت Tab Custom را با استفاده از
startActivityForResult()
شروع کنید.
اگر میخواهید راهاندازی سریعی داشته باشید در صورتی که هنوز اتصال سرویس برقرار نشده است، هر دو روش را ترکیب کنید.
پیکربندی صفحه پایین
برای تبدیل یک تب سفارشی به یک تب سفارشی جزئی، ارتفاع راهاندازی اولیه را با فراخوانی متد setInitialActivityHeightPx()
کلاس CustomTabBuilder
بر حسب پیکسل تعریف کنید. به طور پیشفرض، برگه سفارشی جزئی قابل تغییر اندازه است، اما میتوانید ACTIVITY\_HEIGHT\_FIXED
را برای غیرفعال کردن این رفتار ارسال کنید:
new CustomTabsBuilder().setInitialActivityHeightPx(
400,
ACTIVITY_HEIGHT_FIXED
);
پیکربندی صفحه جانبی
برای پیکربندی رفتار صفحه جانبی، با فراخوانی متد setInitialActivityWidthPx()
کلاس CustomTabBuilder
، عرض راه اندازی اولیه را بر حسب پیکسل تعریف کنید.
به طور پیشفرض، برگه سفارشی جزئی قابل تغییر اندازه است، اما میتوانید ACTIVITY\_HEIGHT\_FIXED
را برای غیرفعال کردن این رفتار ارسال کنید:
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(session)
.setInitialActivityHeightPx(400)
.setInitialActivityWidthPx(400);
.setActivitySideSheetBreakpointDp(800);
اگر عرض صفحه بزرگتر از مقدار نقطه شکست تعیین شده توسط ()setActivitySideSheetBreakpointDp باشد، تب سفارشی مانند یک صفحه جانبی عمل می کند. اگر عرض صفحه بیشتر از x
باشد، تب Custom به عنوان یک صفحه جانبی عمل می کند، در غیر این صورت مانند یک صفحه پایین عمل می کند. اگر نقطه شکست مشخص نشده است، اجرای مرورگر باید به عنوان مقدار پیش فرض 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);
}
});
}
مرحله بعدی: بیاموزید که چگونه تعامل کاربر را در برگههای سفارشی خود اندازهگیری کنید .