כברירת מחדל, כרטיסיות מותאמות אישית מופעלות כפעילות בחלון מלא. החל מגרסה 107 של Chrome, אפשר להשתמש בכרטיסיות מותאמות אישית חלקיות כדי לציין גובה שונה של ההפעלה במצב לאורך, כך שהמשתמשים יוכלו לבצע כמה משימות בו-זמנית על ידי אינטראקציה עם האפליקציה בזמן צפייה בתוכן אינטרנט. כדי להרחיב את הכרטיסייה 'מותאם אישית' למסך מלא, גוררים את נקודת האחיזה של סרגל הכלים כלפי מעלה, ומשחזרים את גובה ההפעלה הראשונית על ידי גרירת נקודת האחיזה למטה.
![צילום מסך של כרטיסייה חלקית בגיליון תחתון](https://developer.chrome.com/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-ff19cab6a28dd.png?authuser=5&hl=he)
במסכים גדולים או במכשירים בפריסה לרוחב, החל מ-Chrome 120, תוכלו לציין רוחב הפעלה מקסימלי להצגת כרטיסייה חלקית בהתאמה אישית בגיליון צדדי. הגדרת נקודת עצירה מאפשרת לך להחליט מתי להפעיל כרטיסייה מותאמת אישית חלקית בחלק התחתון או בגיליון צדדי.
![צילום מסך של גיליון צדדי כרטיסייה חלקית](https://developer.chrome.com/static/docs/android/custom-tabs/guide-partial-custom-tabs/image/example-partial-tab-sidesheet.jpg?authuser=5&hl=he)
ידע מוקדם שנדרש לקורס
כדי להשתמש בכרטיסיות מותאמות אישית חלקיות, צריך:
להתחיל סשן חדש בדפדפן באמצעות
CustomTabsServiceConnection
ולהעביר אותו אל Intent של כרטיסיות מותאמות אישית אומתחילים את הפעילות בכרטיסייה 'מותאם אישית' באמצעות
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
, הכרטיסייה המותאמת אישית תפעל כגיליון צדדי, אחרת היא תפעל כגיליון תחתון. אם לא צוינה נקודת עצירה (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);
}
});
}
השלב הבא: איך מודדים התעניינות של משתמשים בכרטיסיות בהתאמה אישית.