البرمجة

تغيير لون خلفية شاشة البدء في تطبيقات Android

عند استخدام موضوع DayNight في تطبيقك مع شاشة البدء launch screen، يتم عرض الشاشة البيضاء في النهار تليها النشاط الذي يتميز باللون البيضاء أيضًا. ولكن في الليل، يتم عرض الشاشة البيضاء تليها النشاط الذي يظهر باللون الداكن.

لكن كيف يمكن تغيير لون الخلفية في شاشة البدء وفقًا للموضوع؟ هذا يمكن تحقيقه عن طريق التلاعب بقالب الطبقات الذي يتكون منه شاشة البدء launch_screen.xml.

للقيام بذلك، يجب تعديل القالب ليتماشى مع السمة النهارية والليلية. يمكن ذلك عن طريق تغيير اللون المستخدم في الطبقة الأولى من القالب إلى لون متغير يتغير وفقًا للسمة المستخدمة.

للقيام بذلك، يمكن إنشاء ملف قالب جديد بالاسم “launch_screen.xml” في المجلد res/drawable-night مع تحديد لون مختلف للخلفية. على سبيل المثال، يمكن استخدام اللون الأسود في الليل. يمكن تحقيق ذلك بإضافة ملف launch_screen.xml إلى المجلد res/drawable-night بالشكل التالي:

xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <color android:color="@color/material_black"/> item> <item> <bitmap android:gravity="center" android:src="@drawable/launch_logo" android:tileMode="disabled"/> item> layer-list>

هكذا، عند تشغيل التطبيق في النهار، ستظهر شاشة البدء باللون الأبيض كما هو معتاد، ولكن عند تشغيله في الليل، ستتغير الخلفية لتظهر باللون الأسود متناسبة مع السمة الليلية.

يجب مراعاة أن هذه الطريقة تستند إلى استخدام ملفات الموارد المتعددة (مثل drawable-night) لتوفير موارد مختلفة تعتمد على السمة المستخدمة. وبهذه الطريقة، يمكن تخصيص مظهر شاشة البدء بسهولة وفقًا للسمة المستخدمة دون الحاجة إلى موارد مختلفة لكل سمة.

المزيد من المعلومات

لكن بعض المطورين قد يواجهون تحديًا عند استخدام هذا النهج، وهو كيفية ضمان استخدام اللون المناسب لخلفية شاشة البدء launch screen وفقًا للسمة النهارية والليلية بشكل ديناميكي.

للتغلب على هذا التحدي، يمكن استخدام أداة التضمين الديناميكية (Dynamic Resource Embedding) المتوفرة في Android Gradle Plugin version 7.0.0 وما بعدها. هذه الأداة تسمح بتضمين موارد مختلفة في تطبيقك بناءً على شرط معين، مثل نوع السمة المستخدمة.

لتطبيق هذا النهج، يمكن إضافة ملف launch_screen.xml إلى المجلد res/drawable واستخدام أداة التضمين الديناميكية لتعيين اللون المناسب وفقًا للسمة المستخدمة. يمكن القيام بذلك عن طريق تعريف متغير يمثل اللون المناسب لكل سمة، ثم استخدام هذا المتغير في الملف launch_screen.xml.

على سبيل المثال، يمكن تعريف متغيرين في ملف colors.xml كما يلي:

xml
<color name="launch_screen_color_day">@color/material_whitecolor> <color name="launch_screen_color_night">@color/material_blackcolor>

ثم يمكن تحديد لون الخلفية في الملف launch_screen.xml باستخدام أداة التضمين الديناميكية كما يلي:

xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <color android:color="@color/launch_screen_color"/> item> <item> <bitmap android:gravity="center" android:src="@drawable/launch_logo" android:tileMode="disabled"/> item> layer-list>

ثم يمكن تعيين قيمة للمتغير “launch_screen_color” بناءً على السمة المستخدمة في ملف themes.xml كما يلي:

xml
<style name="LaunchTheme" parent="AppTheme"> <item name="android:windowBackground">@drawable/launch_screenitem> <item name="launch_screen_color">@color/launch_screen_color_dayitem> style> <style name="LaunchThemeNight" parent="AppTheme"> <item name="android:windowBackground">@drawable/launch_screenitem> <item name="launch_screen_color">@color/launch_screen_color_nightitem> style>

بهذه الطريقة، ستتغير لون خلفية شاشة البدء تلقائيًا وفقًا للسمة المستخدمة، سواء كانت النهارية أو الليلية، دون الحاجة إلى استخدام ملفات الموارد المتعددة أو تكرار الشفرة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر