ריבוי משימות עם כרטיסיות מותאמות אישית חלקיות

כברירת מחדל, כרטיסיות מותאמות אישית מופעלות כפעילות בחלון מלא. החל מגרסה 107 של Chrome, אפשר להשתמש בכרטיסיות מותאמות אישית חלקיות כדי לציין גובה שונה של ההפעלה במצב לאורך, כך שהמשתמשים יוכלו לבצע כמה משימות בו-זמנית על ידי אינטראקציה עם האפליקציה בזמן צפייה בתוכן אינטרנט. כדי להרחיב את הכרטיסייה 'מותאם אישית' למסך מלא, גוררים את נקודת האחיזה של סרגל הכלים כלפי מעלה, ומשחזרים את גובה ההפעלה הראשונית על ידי גרירת נקודת האחיזה למטה.

צילום מסך של כרטיסייה חלקית בגיליון תחתון
כרטיסייה חלקית בהתאמה אישית בגיליון תחתון.

במסכים גדולים או במכשירים בפריסה לרוחב, החל מ-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, הכרטיסייה המותאמת אישית תפעל כגיליון צדדי, אחרת היא תפעל כגיליון תחתון. אם לא צוינה נקודת עצירה (breakpoint), צריך להגדיר את הטמעת הדפדפן כערך ברירת המחדל 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);
        }
    });
}

השלב הבא: איך מודדים התעניינות של משתמשים בכרטיסיות בהתאמה אישית.