אם הטמעתם מסך פתיחה מותאם אישית ב-Android 11 ואילך, כדאי להעביר את האפליקציה ל-API של SplashScreen
כדי לוודא שהיא תוצג בצורה תקינה ב-Android 12 ואילך.
החל מגרסה 12 של Android, המערכת מחילה את מסך הפתיחה שמוגדר כברירת מחדל במערכת Android על כל האפליקציות בהפעלה ראשונית ובהפעלה חוזרת. כברירת מחדל, מסך הפתיחה של המערכת נוצר באמצעות רכיב הסמל של האפליקציה במרכז האפליקציות והסמל windowBackground
של העיצוב, אם הוא בצבע אחד.
אם לא תעבירו את האפליקציה, יכול להיות שחוויית ההפעלה של האפליקציה ב-Android 12 ואילך תהיה פחות טובה או שתגרום לתוצאות לא רצויות.
אם מסך הפתיחה הקיים מוטמע באמצעות עיצוב מותאם אישית שמחליף את
android:windowBackground
, המערכת מחליפה את מסך הפתיחה המותאם אישית במערכת Android שמוגדרת כברירת מחדל מסך פתיחה ב-Android 12 ואילך. יכול להיות שזו לא הייתה הכוונה של האפליקציה חוויה אישית.אם מסך הפתיחה הקיים מוטמע באמצעות
Activity
ייעודי, כשמפעילים את האפליקציה במכשירים עם Android 12 ואילך, מסכי פתיחה כפולים: מסך הפתיחה של המערכת מוצגים ואחריה הפעילות הקיימת של מסך הפתיחה.
כדי למנוע חוויות באיכות נמוכה או לא מכוונות כאלה, אפשר להשלים את תהליך ההעברה שמתואר במסמך הזה. לאחר ההעברה, ה-API משפר את זמן ההפעלה, נותן שליטה מלאה בחוויית מסך הפתיחה, ויוצרים חוויית השקה עקבית יותר עם אפליקציות אחרות בפלטפורמה.
ספריית תאימות ל-SplashScreen
אפשר להשתמש ב-SplashScreen
API ישירות, אבל מומלץ מאוד להשתמש במקום זאת בספריית התאימות של Androidx SplashScreen
. הספרייה התואמת משתמשת ב-API SplashScreen
, מאפשרת
תאימות לאחור ויוצרת מראה ותחושה עקביים למסך הפתיחה
יוצגו בכל הגרסאות של Android. המסמך הזה נכתב באמצעות הספרייה compat.
אם עוברים ישירות באמצעות ה-API של SplashScreen
, ב-Android 11 ובגרסאות קודמות
מסך הפתיחה נראה בדיוק אותו הדבר כמו לפני ההעברה. החל מגרסה Android 12, מסך הפתיחה מעוצב בסגנון של Android 12.
אם מבצעים את ההעברה באמצעות ספריית ה-compat של SplashScreen
, המערכת מציגה את אותו מסך הפתיחה בכל הגרסאות של Android.
העברת ההטמעה של מסך הפתיחה
כדי להעביר את מסך הפתיחה הקיים, צריך לפעול לפי השלבים הבאים ב-Android מגרסה 12 ואילך.
התהליך הזה רלוונטי לכל סוג של הטמעה שמעבירים
מ. אם אתם עוברים מ-Activity
ייעודי, עליכם לפעול לפי השיטות המומלצות שמתוארות במסמך הזה כדי להתאים אישית את מסך הפתיחה Activity
. בנוסף, ה-API של SplashScreen
מפחית את זמן האחזור של תהליך ההפעלה שנגרם כתוצאה מפעילות ייעודית של מסך פתיחה.
כדי להעביר את מסך הפתיחה:
בקובץ
build.gradle
, לשנות אתcompileSdkVersion
ולכלול את הספרייהSplashScreen
של יחסי התלות.build.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }
יוצרים עיצוב עם הורה של
Theme.SplashScreen
. מגדירים את הערך שלpostSplashScreenTheme
לעיצוב שבוActivity
חייב להשתמש, ואת הערך שלwindowSplashScreenAnimatedIcon
ל-drawable או ל-drawable מונפש. שאר המאפיינים הם אופציונליים.<style name="Theme.App.Starting" parent="Theme.SplashScreen"> <!-- Set the splash screen background, animated icon, and animation duration. --> <item name="windowSplashScreenBackground">@color/...</item> <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated drawable. One of these is required. --> <item name="windowSplashScreenAnimatedIcon">@drawable/...</item> <!-- Required for animated icons. --> <item name="windowSplashScreenAnimationDuration">200</item> <!-- Set the theme of the Activity that directly follows your splash screen. This is required. --> <item name="postSplashScreenTheme">@style/Theme.App</item> </style>
אם רוצים להוסיף צבע רקע מתחת לסמל, אפשר להשתמש בעיצוב
Theme.SplashScreen.IconBackground
ולהגדיר את המאפייןwindowSplashScreenIconBackground
.במניפסט, צריך להחליף את העיצוב של הפעילות ההתחלתית בעיצוב שבחרת בשלב הקודם,
<manifest> <application android:theme="@style/Theme.App.Starting"> <!-- or --> <activity android:theme="@style/Theme.App.Starting"> ...
צריך להתקשר אל
installSplashScreen
בפעילות ההתחלתית לפני השיחהsuper.onCreate()
.Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { // Handle the splash screen transition. val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) ...
Java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // Handle the splash screen transition. SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } }
הפונקציה installSplashScreen
מחזירה את האובייקט של מסך הפתיחה, שאפשר להשתמש בו כדי להתאים אישית את האנימציה או כדי להשאיר את מסך הפתיחה במסך למשך זמן ארוך יותר. לפרטים נוספים על התאמה אישית של האנימציה, אפשר לעיין במאמר
משאירים את מסך הפתיחה במסך לתקופות ארוכות יותר
וגם
מתאימים אישית את האנימציה לסגירת מסך הפתיחה.
התאמת הפעילות במסך הפתיחה בהתאמה אישית למסך הפתיחה
אחרי שתעברו למסך הפתיחה ל-Android 12 ואילך, תוכלו להחליט מה לעשות עם מסך הפתיחה בהתאמה אישית הקודם Activity
. עומדות לרשותכם האפשרויות הבאות:
- לשמור את הפעילות המותאמת אישית, אך למנוע את הצגתה.
- לשמור את הפעילות בהתאמה אישית מסיבות שקשורות למיתוג.
- מסירים את הפעילות בהתאמה אישית ומתאימים את האפליקציה לפי הצורך.
מניעת ההצגה של הפעילות המותאמת אישית
אם מסך הפתיחה הקודם Activity
משמש בעיקר לניתוב,
חשבו על דרכים להסיר אותו. לדוגמה, אפשר לקשר ישירות
פעילות או מעבר לפעילות בודדת עם רכיבי משנה. אם זו לא
שימושי, אפשר להשתמש
SplashScreen.setKeepOnScreenCondition
כדי שפעילות הניתוב תישאר כפי שהיא, אבל תמנע את הרינדור שלה. כך תוכלו להעביר את מסך הפתיחה לפעילות הבאה ולאפשר מעבר חלק.
Kotlin
class RoutingActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) // Keep the splash screen visible for this Activity. splashScreen.setKeepOnScreenCondition { true } startSomeNextActivity() finish() } ...
Java
public class RoutingActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen splashScreen = SplashScreen.installSplashScreen(this); super.onCreate(savedInstanceState); // Keep the splash screen visible for this Activity. splashScreen.setKeepOnScreenCondition(() -> true ); startSomeNextActivity(); finish(); } ...
שמירה של הפעילות בהתאמה אישית לצורכי מיתוג
אם אתם רוצים להשתמש במסך הפתיחה הקודם Activity
למטרות מיתוג, עליכם
אפשר לעבור ממסך הפתיחה של המערכת למסך הפתיחה בהתאמה אישית
Activity
על ידי התאמה אישית של האנימציה לסגירת הפתיחה
.
עם זאת, מומלץ להימנע מהתרחיש הזה אם אפשר ולהשתמש בSplashScreen
ממשק API למיתוג מסך הפתיחה שלך.
אם אתם צריכים להציג תיבת דו-שיח, אנחנו מומלץ להציג אותו מעל הפעילות הבאה של מסך הפתיחה בהתאמה אישית, או במהלך הפעילות הראשית אחרי מסך הפתיחה של המערכת.
הסרת הפעילות של מסך הפתיחה המותאם אישית
באופן כללי, מומלץ להסיר את מסך הפתיחה המותאם אישית הקודם Activity
לגמרי כדי למנוע כפילויות של מסכי פתיחה, לשפר את היעילות ולקצר את זמני הטעינה של מסכי הפתיחה. יש שיטות שונות
שאפשר להשתמש בהם כדי להימנע מהצגת פעילויות מיותרות במסך הפתיחה.
שימוש בטעינה מדורגת של הרכיבים, המודולים או הספריות הימנעות מטעינה או אתחול רכיבים או ספריות שלא נדרשים לאפליקציה כדי לפעול בזמן ההשקה. לטעון אותם מאוחר יותר, כשהאפליקציה תצטרך אותם.
אם האפליקציה באמת זקוקה לרכיב כדי לפעול באופן תקין, יש לטעון אותו רק כאשר שבאמת נדרש ולא בזמן ההשקה, או להשתמש בשרשור ברקע כדי לטעון אותו אחרי שהאפליקציה מופעלת. כדאי לנסות לשמור על
Application.onCreate()
קל ככל האפשר.כדאי גם להשתמש בספריית ההפעלה של האפליקציה כדי לאתחל רכיבים בזמן ההפעלה של האפליקציה. כשעושים זאת, חשוב לוודא שעדיין נטענים כל המודולים הנדרשים לפעילות ההתחלה, ושאין שיבושים בזמן שהמודולים שנטענו בזלזול הופכים לזמינים.
יוצרים placeholder בזמן טעינת כמות קטנה של נתונים באופן מקומי. משתמשים ב גישה מומלצת ליצירת נושאים, ולהשאיר את הרינדור עד שהאפליקציה מוכן. כדי להטמיע מסך פתיחה שתואם לאחור, פועלים לפי השלבים שמפורטים משאירים את מסך הפתיחה במסך לתקופות ארוכות יותר.
הצגת ערכי placeholder בטעינות מבוססות-רשת עם משך זמן קבוע לסגור את מסך הפתיחה ולהציג placeholders לטעינה אסינכרונית. כדאי להחיל אנימציות עדינות על אזור התוכן שמשקפות את במצב הטעינה. כדי לאפשר מעבר חלק בזמן טעינת התוכן, חשוב לוודא שמבנה התוכן שנטען תואם ככל האפשר למבנה השלד.
שימוש בשמירה במטמון. כשמשתמש פותח את האפליקציה בפעם הראשונה, אפשר להציג של חלק מהרכיבים בממשק המשתמש, כפי שמוצג באיור הבא. בפעם הבאה שהמשתמש יחזור לאפליקציה, תוכלו להציג את התוכן שנשמר במטמון בזמן שאתם טוענים תוכן עדכני יותר.