في حال تنفيذ شاشة بداية مخصّصة في الإصدار 11 من نظام Android أو الإصدارات الأقدم، عليك نقل
التطبيق إلى واجهة برمجة تطبيقات SplashScreen
للمساعدة
التأكّد من عرضه بشكل صحيح في نظام التشغيل Android 12 والإصدارات الأحدث
بدءًا من الإصدار 12 من Android، يطبّق النظام إعدادات البداية التلقائية لنظام Android.
الشاشة مفعَّلة
بارد ودافئ
لجميع التطبيقات. بشكل افتراضي،
يتم إنشاء شاشة البداية لهذا النظام باستخدام عنصر رمز مشغّل تطبيقك
وwindowBackground
من
والمظهر، إذا كان لونًا واحدًا.
في حال عدم نقل بيانات تطبيقك، لن تحتاج إلى تجربة إطلاق التطبيق على نظام التشغيل Android 12 قد تنخفض أو يكون لها نتائج غير مقصودة.
إذا تم تنفيذ شاشة البداية الحالية باستخدام مظهر مخصّص يحلّ محل
android:windowBackground
، يستبدل النظام شاشة البداية المخصّصة بشاشة بداية تلقائية لنظام Android على الإصدار 12 من Android والإصدارات الأحدث. قد لا يكون هذا المحتوى هو المقصود من تطبيقك. المستخدم.إذا تم تنفيذ شاشة البداية الحالية باستخدام
Activity
مخصّص، يؤدي بدء تشغيل تطبيقك على الأجهزة التي تعمل بنظام التشغيل Android 12 أو الإصدارات الأحدث إلى ظهور شاشات بداية مكرّرة: شاشة البداية الخاصة بالنظام ، ثم نشاط شاشة البداية الحالية.
يمكنك منع حدوث هذه التجارب غير المقصودة أو المتدهورة من خلال إكمال عملية النقل الموضّحة في هذا المستند. بعد نقل البيانات، تعمل واجهة برمجة التطبيقات في تحسين وقت بدء التشغيل ومنحك إمكانية التحكم الكامل في تجربة شاشة البداية وينشئ تجربة إطلاق أكثر اتساقًا مع التطبيقات الأخرى على النظام الأساسي.
مكتبة التوافق مع شاشة البداية
يمكنك استخدام واجهة برمجة التطبيقات SplashScreen
مباشرةً، ولكننا ننصحك بشدة باستخدام
مكتبة Androidx SplashScreen
compat
بدلاً من ذلك. تستخدم مكتبة التوافق مع واجهة برمجة تطبيقات SplashScreen
،
التوافق مع الأنظمة القديمة، وينشئ شاشة بداية متسقة شكلاً ومضمونًا
العرض عبر جميع إصدارات Android. تمت كتابة هذا المستند باستخدام دالة التوافق
المكتبة.
في حال نقل البيانات باستخدام واجهة برمجة التطبيقات SplashScreen
مباشرةً على الإصدار 11 من نظام التشغيل Android والإصدارات الأقدم،
ستظهر شاشة البداية بالشكل نفسه تمامًا كما كانت قبل نقل البيانات. البدء في
في نظام Android 12، تمتاز شاشة البداية بمظهر وأسلوب Android 12.
في حال نقل البيانات باستخدام مكتبة الأجهزة المتوافقة SplashScreen
، سيعرض النظام
شاشة البداية نفسها في جميع إصدارات Android
نقل عملية تنفيذ شاشة البداية
أكمِل الخطوات التالية لنقل عملية تنفيذ شاشة البداية الحالية إلى الإصدار 12 من Android والإصدارات الأحدث.
ينطبق هذا الإجراء على أي نوع من عمليات التنفيذ تريد نقله.
منهم. إذا كنت تنقل البيانات من صفحة Activity
مخصّصة، اتّبِع الخطوات التالية
الممارسات الموضحة في هذا المستند لتكييف
شاشة البداية المخصّصة Activity
تعمل واجهة برمجة التطبيقات SplashScreen
API أيضًا على تقليل وقت استجابة بدء التشغيل الذي يتم تقديمه من خلال نشاط مخصّص لشاشة البداية.
لنقل شاشة البداية، اتّبِع الخطوات التالية:
في ملف
build.gradle
، تغييرcompileSdkVersion
وتضمين مكتبة متوافقةSplashScreen
في التبعيات.build.gradle android { compileSdkVersion 31 ... } dependencies { ... implementation 'androidx.core:core-splashscreen:1.0.0-beta02' }
أنشئ مظهرًا يتضمّن
Theme.SplashScreen
. اضبط قيمةpostSplashScreenTheme
على المظهر الذي يجب أن يستخدمهActivity
وقيمةwindowSplashScreenAnimatedIcon
على عنصر قابل للرسم أو عنصر قابل للرسم متحرك . أما السمات الأخرى، فهي اختيارية.<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
واجهة برمجة التطبيقات لعرض علامتك التجارية على شاشة البداية.
إذا كنت بحاجة إلى عرض مربع حوار، يمكننا ننصحك بعرضه على نشاط شاشة البداية المخصّص اللاحق أو فوق النشاط الرئيسي بعد شاشة البداية الخاصة بالنظام.
إزالة نشاط شاشة البداية المخصّص
بشكل عام، ننصحك بإزالة شاشة البداية المخصّصة السابقة Activity
تمامًا لتجنُّب تكرار شاشات البداية، ولزيادة الكفاءة،
وخفض أوقات تحميل شاشات البداية. هناك أساليب مختلفة
يمكنك استخدامها لتجنُّب عرض أنشطة شاشة البداية المتكرّرة.
استخدِم طريقة "التحميل الكسول" للمكوّنات أو الوحدات أو المكتبات. تجنَّب تحميل أو بدء مكونات أو مكتبات غير مطلوبة ليعمل التطبيق عند تشغيله. يتم تحميلها لاحقًا عندما يحتاج إليها التطبيق.
إذا كان تطبيقك يحتاج إلى مكوّن للعمل بشكلٍ سليم، لا تحمِّله إلا عند ازدياد الحاجة إليه وعدم تحميله في وقت التشغيل، أو استخدِم سلسلة مهام في الخلفية لتحميله بعد بدء تشغيل التطبيق. يجب إبقاء "
Application.onCreate()
" خفيفًا بنسبة ممكن.يمكنك أيضًا الاستفادة من استخدام مكتبة App Startup لإعداد المكوّنات عند بدء تشغيل التطبيق. عند إجراء ذلك، احرص على تحميل كل الوحدات المطلوبة للنشاط الأوّلي، ولا تُدرِج أيّ تقطُّعات في الأداء عندما تصبح الوحدات التي يتم تحميلها بشكلٍ كسول متاحة.
أنشئ عنصر نائب أثناء تحميل قدر صغير من البيانات على الجهاز. استخدِم أسلوب تحديد المظهر المُقترَح وانتظر حتى يصبح التطبيق جاهزًا. لتنفيذ شاشة بداية متوافقة مع الأنظمة القديمة، اتّبِع الخطوات التالية: الخطوات الموضحة في إبقاء شاشة البداية على الشاشة لفترات أطول
إظهار العناصر النائبة: بالنسبة إلى عمليات التحميل المستندة إلى الشبكة التي لها مدد غير محدّدة، أزِل شاشة البداية وأظهِر العناصر النائبة لعمليات التحميل غير المتزامنة. ننصحك بتطبيق رسوم متحركة دقيقة على منطقة المحتوى التي تعكس حالة التحميل. تأكد من أن بنية المحتوى المحمّل تتطابق مع الهيكل العظمي بالإضافة إلى إمكانية دعم انتقال سلس عند تحميل المحتوى.
استخدام ميزة التخزين المؤقت عندما يفتح المستخدم تطبيقك لأول مرة، يمكنك عرض مؤشرات تحميل لبعض عناصر واجهة المستخدم، كما هو موضّح في الشكل التالي. تشير رسالة الأشكال البيانية في المرة التالية التي يعود فيها المستخدم إلى تطبيقك، يمكنك عرض هذا المحتوى المخزّن مؤقتًا أثناء تقوم بتحميل محتوى أحدث.