انجام چند کار با زبانه های سفارشی جزئی

سباستین بنز
Sebastian Benz

به طور پیش فرض، Custom Tabs به عنوان یک فعالیت تمام پنجره راه اندازی می شود. با شروع در Chrome 107، می‌توانید از برگه‌های سفارشی جزئی برای تعیین ارتفاع راه‌اندازی متفاوت در حالت عم��دی استفاده کنید تا کاربران بتوانند با تعامل با برنامه شما در حین مشاهده محتوای وب، چند کار را انجام دهند. کاربران می توانند با کشیدن دسته نوار ابزار به بالا، برگه سفارشی را به تمام صفحه گسترش دهند و با کشیدن دسته به پایین، ارتفاع راه اندازی اولیه را بازیابی کنند.

نماگرفت برگه جزئی صفحه پایین
برگه سفارشی جزئی در یک صفحه پایین.

برای نمایشگرها یا دستگاه‌های بزرگ در حالت افقی، از Chrome 120 شروع می‌شود، می‌توانید حداکثر عرض راه‌اندازی را برای نمایش یک برگه سفارشی جزئی در یک صفحه جانبی مشخص کنید. با تنظیم نقطه شکست، می‌توانید تصمیم بگیرید که چه زمانی یک برگه سفارشی جزئی را در پایین یا یک صفحه کناری راه‌اندازی کنید.

تصویر صفحه جانبی برگه جزئی
برگه سفارشی جزئی در یک صفحه جانبی.

پیش نیاز

برای اینکه بتوانید از برگه های سفارشی جزئی استفاده کنید، باید:

اگر می‌خواهید راه‌اندازی سریعی داشته باشید در صورتی که هنوز اتصال سرویس برقرار نشده است، هر دو روش را ترکیب کنید.

پیکربندی صفحه پایین

برای تبدیل یک تب سفارشی به یک تب سفارشی جزئی، ارتفاع راه‌اندازی اولیه را با فراخوانی متد 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);
        }
    });
}

مرحله بعدی: بیاموزید که چگونه تعامل کاربر را در برگه‌های سفارشی خود اندازه‌گیری کنید .