كيفية تضمين سمة الظلام في تطبيق Android الخاص بك

بالنسبة للمطورين ، يعد إنشاء تطبيق Android عملية سهلة - يعد تصميم واجهة مستخدم جذابة أمرًا صعبًا بالفعل. لهذا السبب كتبنا دليل "كيفية تصميم واجهة مستخدم تطبيقات Android لا تمتص" للمطورين الذين يحتاجون إلى بعض الإلهام في إنشاء واجهات مستخدم بسيطة ولكنها جذابة. في هذا الدليل ، ذكرنا باختصار إضافة سمة الوضع المظلم / الليلي إلى تطبيقاتك ، وفي هذا الدليل سننتقل إليك.

يمكن أن تكون إضافة سمة الوضع المظلم / الليلي إلى التطبيق الخاص بك خيارًا رائعًا للمستخدمين لديك - فهي توفر عمر البطارية ، وتكون أسهل كثيرًا على العيون في الليل. خلفية بيضاء على نص أسود ، أو أي مزيج من الألوان "الزاهية" في واجهة المستخدم الخاصة بك ، مرهقة للغاية على العينين ، خاصةً في الليل. وبالتالي ، فإن الخلفية المظلمة ذات النص الفاتح أقل إرهاقًا وتؤذي العينين ، ولهذا السبب بدأت العديد من التطبيقات الشعبية بما في ذلك المظهر المظلم - YouTube و Reddit مؤخرًا ، على الرغم من أن Facebook لا يزال لم ينشر برامجه بعد أن وعد بواجهة العودة قد.

إذا كنت ترغب في إضافة وضع داكن يمكن تبديله بسهولة إلى تطبيق Android الخاص بك ، فاتبع دليل Appuals هذا وقم بالتعليق إذا واجهت أية مشكلات!

إنشاء سمات XML

تحتاج أولاً إلى إنشاء ملف سمات XML يتولى معالجة هذه السمات. هذا أفضل بكثير من تضمين مجموعتين من الموارد في ملف APK الخاصين بك لسمتين مختلفتين ، وبالتالي انتفاخ حجم ملف APK ، حيث يمكن لنظام Android تغيير الألوان على السمات من خلال XML.

لذلك في مجلد "الموارد" في تطبيقك ، أنشئ ملفًا باسم attrs.xml وأضف هذه السطور ( هذه سمات قابلة للنمط):

قبل Lollipop ، لم نتمكن من تحديد سمات للدرجات ، لذلك كان علينا تحديد معرّفات المورد للرسومات - ومع ذلك ، لم يعد الأمر كذلك.

إضافة الأنماط

لإنجاح هذا العمل ، نحتاج إلى إنشاء نمطين منفصلين يشتركان في نفس القاعدة. من الواضح أن الأول سيكون سمة "النور" الأساسية ، والثاني سيكون سمة "الظلام".

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

فيما يلي الأنماط الفعلية لنشاط معين:

 # F4F4F6 # 33343B 

يلزمك تحديد أحد هذه السمات في بيان نشاط التطبيق ، والذي هو في هذه الحالة FeedActivity.

تبسيط وجهات النظر

في ما يلي مثال على تبسيط طرق العرض الخاصة بك - في هذا المثال ، عن خطأ في إعادة توجيه "الصفحة غير موجودة".

كيفية تمكين تبديل موضوع ديناميكي

أفضل طريقة وأكثرها فاعلية لتمكين تبديل السمة الديناميكية هي تحميل SharedPreference بقيمة والتي يتم استخدامها لتخزين الإعداد في مثيل التطبيق باستخدام نمط Singleton ، مما يعني أنه لن يتعين علينا القيام بذلك في بداية كل نشاط.

 تطبيق الطبقة العامة يمتد التطبيق {public static final String TAG = "App"؛ المنطقية الخاصة isNightModeEnabled = false؛ Override public void onCreate () {super.onCreate ()؛ // نقوم بتحميل حالة الوضع الليلي هنا SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (هذا) ؛ this.isNightModeEnabled = mPrefs.getBoolean ("NIGHT_MODE" ، خطأ) ؛ } المنطقية العامة isNightModeEnabled () {return isNightModeEnabled؛ } public void setIsNightModeEnabled (منطقية isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled؛ }} 

نظرًا لأن هذا المثيل يتم تشغيله قبل أي شيء آخر ، فإنه يسمح لك بالاتصال بـ NightModeEnabled () Boolean وقتما تشاء ، في أي نشاط ينتمي إلى التطبيق بمجرد فتحه.

 تمد FeedActivity من الفئة النهائية العامة بتطبيق AppCompatActivity {private final static String TAG = "FeedActivity"؛ Override محمية void onCreate (Bundle saveInstanceState) {if (MyApplication.getInstance (). isNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark)؛ } super.onCreate (saveInstanceState)؛ setContentView (R.layout.activity_feed)؛ }} 

ومع ذلك ، إذا كنت تريد تطبيق سمة مختلفة عن السمة المحددة في ملف البيان ، فيجب أن يتم ذلك قبل استدعاء الأسلوب الأصل onCreate ().

تحديد الحالة باستخدام AppCompat

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

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES)؛ 

هنا ، يمكنك إما استخدام:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

استرداد الدولة

 AppCompatDelegate.getDefaultNightMode ()؛ تمد FeedActivity من الفئة النهائية العامة بتطبيق AppCompatActivity {private final static String TAG = "FeedActivity"؛ تضمين التغريدة } super.onCreate (saveInstanceState)؛ setContentView (R.layout.activity_feed)؛ }} 

يجب أن يكون الأمر كذلك - يمكنك متابعة تخصيص القيم وتعديلها حسب رغبتك ، ولكن هذا الدليل هو مقدمة رائعة لتبدأ في تضمين سمة مظلمة أصلية في تطبيق Android الخاص بك.

مقالات مثيرة للاهتمام