إنجاز مهام متعددة من خلال علامات تبويب مخصصة جزئية

يتم تلقائيًا تشغيل "علامات التبويب المخصَّصة" كنشاط للنافذة الكاملة. بدءًا من 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);

ستعمل علامة التبويب Custom Tab كورقة جانبية إذا كان عرض الشاشة أكبر من قيمة نقطة الإيقاف التي تم ضبطها من خلال 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);
        }
    });
}

الخطوة التالية: تعرَّف على كيفية قياس تفاعل المستخدمين في علامات التبويب المخصَّصة.