تتيح لك الأنماط والمظاهر في Android فصل تفاصيل تصميم تطبيقك عن واجهة المستخدم. الهيكل والسلوك، على غرار أوراق الأنماط في تصميم الويب.
النمط عبارة عن مجموعة من السمات التي تحدد مظهر سمة واحدة
View
يمكن أن يحدد النمط السمات
مثل لون الخط وحجمه ولون الخلفية وغير ذلك الكثير.
المظهر هو مجموعة من السمات المطبّقة على تطبيق أو نشاط أو ملف شخصي بالكامل. التسلسل الهرمي - وليس فقط عرضًا فرديًا. عند تطبيق مظهر، فإن كل عرض في التطبيق أو أن يطبق هذا النشاط كل سمة من سمات الموضوع التي يدعمها. يمكن للمظاهر أيضًا تطبيق أنماط على غير العرض، مثل شريط الحالة وخلفية النافذة.
يتم تعريف الأنماط والمظاهر في
ملف نمط الموارد في
res/values/
، يُطلق عليه عادةً اسم styles.xml
.
المظاهر مقابل الأنماط
هناك العديد من أوجه التشابه بين المظاهر والأنماط، ولكن يتم استخدامها لأغراض مختلفة. الموضوعات لها البنية الأساسية نفسها، أي زوج المفتاح/القيمة يعيّن السمات إلى الموارد.
يحدد style سمات نوع معين من طرق العرض. على سبيل المثال، قد يكون أحد الأنماط لتحديد سمات الزر. كل سمة تحددها في نمط هي سمة يمكنك تعيينها فيها ملف التخطيط. يؤدي استخراج جميع السمات إلى نمط إلى تسهيل استخدامها والحفاظ عليها عبر العديد من التطبيقات المصغّرة
يحدد المظهر مجموعة من الموارد المُعنونة التي يمكن الإشارة إليها باستخدام الأنماط أو التنسيقات
والتطبيقات المصغّرة وهكذا. تعيِّن المظاهر أسماء دلالية، مثل colorPrimary
، لنظام التشغيل Android.
الموارد.
تهدف الأنماط والمظاهر إلى العمل معًا. فعلى سبيل المثال، قد يكون لديك نمط يحدد
أنّ أحد أجزاء الزر هو colorPrimary
، وجزء آخر
colorSecondary
يتم توفير التعريفات الفعلية لهذه الألوان في السمة. فعندما
ينتقل الجهاز إلى الوضع الليلي، يمكن للتطبيق التبديل من الوضع "ضوء" المظهر إلى "داكن" والمظهر
تغيير قيم كل أسماء الموارد هذه. لا تحتاج إلى تغيير الأنماط، نظرًا لأن
تستخدم الأنماط الأسماء الدلالية وليس تعريفات ألوان محددة.
لمزيد من المعلومات حول كيفية عمل المظاهر والأنماط معًا، يمكنك الاطّلاع على مشاركة المدونة. نمط Android: المظاهر مقابل الأنماط
إنشاء نمط وتطبيقه
لإنشاء نمط جديد، افتح ملف res/values/styles.xml
الخاص بمشروعك. بالنسبة
لكل نمط تريد إنشاءه، اتبع الخطوات التالية:
- أضِف عنصر
<style>
باسم يعرّف النمط بشكل فريد. - أضِف عنصر
<item>
لكل سمة نمط تريد تحديدها. تشير رسالة الأشكال البيانيةname
في كل عنصر يحدد سمة يمكنك استخدامها بخلاف ذلك كسمة XML في التصميم. ويجب أن تكون القيمة في العنصر<item>
هي قيمة هذه السمة.
على سبيل المثال، لنفترض أنك حددت النمط التالي:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style> </resources>
يمكنك تطبيق النمط على طريقة عرض كما يلي:
<TextView style="@style/GreenText" ... />
يتم تطبيق كل سمة محددة في النمط على طريقة العرض هذه إذا قبلتها طريقة العرض. العرض يتجاهل أي سمات لا تقبلها.
مع ذلك، فبدلاً من تطبيق نمط على طرق عرض فردية، يمكنك عادةً يمكنك استخدام الأنماط كمظهر لتطبيقك بالكامل أو نشاطك أو مجموعة من كما هو موضح في قسم آخر من هذا الدليل.
توسيع نمط وتخصيصه
عند إنشاء أنماطك الخاصة، قم دائمًا بتوسيع نمط موجود من إطار العمل أو الدعم
المكتبة حتى تحافظ على التوافق مع أنماط واجهة المستخدم للنظام الأساسي. ولتوسيع نمط، حدد
الذي تريد توسيعه باستخدام السمة parent
. ويمكنك بعد ذلك إلغاء الإعدادات
سمات النمط وإضافة سمات جديدة.
على سبيل المثال، يمكنك اكتساب مظهر النص التلقائي لنظام Android الأساسي وتعديله التالي:
<style name="GreenText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00FF00</item> </style>
ومع ذلك، يمكنك دائمًا اكتساب أنماط التطبيقات الأساسية من مكتبة دعم Android. الأنماط في
توفر مكتبة الدعم التوافق من خلال تحسين كل نمط لسمات واجهة المستخدم المتاحة في
لكل إصدار. غالبًا ما يكون لأنماط مكتبة الدعم اسم مشابه للنمط من النظام الأساسي،
ولكن مع تضمين AppCompat
.
ولاكتساب الأنماط من مكتبة أو من مشروعك الخاص، عليك الإفصاح عن اسم النمط الرئيسي.
بدون الجزء @android:style/
الموضح في المثال السابق. على سبيل المثال:
يكتسب المثال التالي أنماط مظهر النص من "مكتبة الدعم":
<style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style>
يمكنك أيضًا اكتساب أنماط - باستثناء الأنماط من النظام الأساسي - عن طريق توسيع نمط
بدلاً من استخدام سمة parent
بدلاً من استخدام علامة النقطة. أي أن تبدأ بالبادئة
اسم النمط مع اسم النمط الذي تريد أن يكتسبه، مفصولاً بنقطة. إِنْتَ
يتم ذلك عادةً فقط عند توسيع أنماطك الخاصة، وليس الأنماط من المكتبات الأخرى. على سبيل المثال:
يكتسب النمط التالي جميع الأنماط من GreenText
في المثال السابق
ثم تزيد حجم النص:
<style name="GreenText.Large"> <item name="android:textSize">22dp</item> </style>
يمكنك الاستمرار في اكتساب مثل هذه الأنماط لعدد من المرّات حسبما تريد من خلال التسلسل على المزيد من الأسماء.
للعثور على السمات التي يمكنك الإفصاح عنها باستخدام علامة <item>
، يُرجى الرجوع إلى ملف XML
السمات" في مراجع الصف المختلفة. إتاحة كل المشاهدات
سمات XML من القاعدة
View
class، وتضيف العديد من طرق العرض سماتها الخاصة. على سبيل المثال،
سمات XML TextView
تضمين
android:inputType
يمكنك تطبيقها على عرض نص يتلقى إدخالات، مثل
التطبيق المصغّر EditText
.
تطبيق نمط كمظهر
يمكنك إنشاء مظهر بالطريقة نفسها التي تنشئ بها الأنماط. يكمن الاختلاف في كيفية تطبيقه:
بدلاً من تطبيق نمط باستخدام السمة style
في طريقة عرض، يمكنك تطبيق مظهر باستخدام
السمة android:theme
على العلامة <application>
أو
علامة <activity>
في ملف AndroidManifest.xml
.
على سبيل المثال، إليك كيفية تطبيق التصميم المتعدد الأبعاد "داكن" في مكتبة دعم Android مظهر على التطبيق بأكمله:
<manifest ... > <application android:theme="@style/Theme.AppCompat" ... > </application> </manifest>
وإليك كيفية تطبيق "الإضاءة" موضوع واحد فقط وهو:
<manifest ... > <application ... > <activity android:theme="@style/Theme.AppCompat.Light" ... > </activity> </application> </manifest>
تطبّق كل طريقة عرض في التطبيق أو النشاط الأنماط التي تتوافق مع الأنماط المحدّدة في موضوع معين. إذا كانت طريقة العرض تتوافق فقط مع بعض السمات المعرَّفة في النمط، سيتم تطبيقها فقط تلك السمات ويتجاهل تلك التي لا تدعمها.
بدءًا من الإصدار 5.0 من نظام التشغيل Android (المستوى 21 من واجهة برمجة التطبيقات) والإصدار 22.1 من Android Support Library، يمكنك أيضًا تحديد
سمة android:theme
إلى طريقة عرض في ملف التنسيق. يؤدي هذا إلى تعديل مظهر
طريقة العرض هذه وأي طرق عرض فرعية، وهي مفيدة لتغيير لوحات ألوان المظاهر في قائمة
من واجهتك.
توضّح الأمثلة السابقة كيفية تطبيق مظهر، مثل Theme.AppCompat
هما.
التي تقدمها مكتبة دعم Android. ولكنّك تحتاج عادةً إلى تخصيص المظهر ليلائم
العلامة التجارية لتطبيقك. وأفضل طريقة للقيام بذلك هي توسيع هذه الأنماط من Support Library
تجاوز بعض السمات، كما هو موضح في القسم التالي.
التسلسل الهرمي للأنماط
يوفّر Android طُرقًا متعدّدة لضبط السمات في تطبيق Android. على سبيل المثال: يمكنك تعيين السمات مباشرةً في تخطيط، وتطبيق نمط على طريقة عرض، وتطبيق مظهر على التخطيط، حتى تعيين السمات آليًا.
عند اختيار تصميم تصميم تطبيقك، يجب أن تضع في اعتبارك التدرّج الهرمي لأنماط Android. بشكل عام، استخدم النُسُق والأنماط قدر الإمكان لتحقيق الاتساق. إذا حددت نفس السمات في أماكن متعددة، تحدد القائمة التالية السمات التي يتم تطبيقها في النهاية. القائمة هي مرتبة من الأولوية القصوى إلى الأدنى.
- تطبيق تصميم على مستوى الأحرف أو الفقرة باستخدام امتدادات النص على مشتق من
TextView
الصفوف. - تطبيق السمات آليًا.
- تطبيق سمات فردية مباشرةً على ملف شخصي.
- تطبيق نمط على طريقة عرض.
- النمط التلقائي.
- تطبيق مظهر على مجموعة من المشاهدات أو نشاط أو على تطبيقك بالكامل
- تطبيق نمط معين خاص بالملف الشخصي، مثل تعيين
TextAppearance
فيTextView
.
مظهر النص
من القيود المفروضة على الأنماط أنّه يمكنك تطبيق نمط واحد فقط على View
. في
TextView
، ومع ذلك، يمكنك أيضًا تحديد
السمة TextAppearance
يعمل بشكل مشابه لأحد الأنماط، كما هو موضح في المثال التالي:
<TextView ... android:textAppearance="@android:style/TextAppearance.Material.Headline" android:text="This text is styled via textAppearance!" />
يتيح لك TextAppearance
تحديد نمط خاص بالنص مع ترك نمط
View
متاح للاستخدامات الأخرى. ومع ذلك، لاحظ أنه إذا قمت بتحديد أي سمات نصية
مباشرةً على View
أو في نمط، تلغي هذه القيم
TextAppearance
من القيم.
يتيح TextAppearance
مجموعة فرعية من سمات التصميم التي TextView
على مستوى خدمات Google. للاطلاع على قائمة السمات الكاملة، راجع
TextAppearance
بعض سمات TextView
الشائعة غير المضمّنة هي
lineHeight[Multiplier|Extra]
,
lines
,
breakStrategy
،
hyphenationFrequency
.
تعمل TextAppearance
على مستوى الأحرف وليس على مستوى الفقرة، لذا
لا يتم دعم السمات التي تؤثر في التخطيط بأكمله.
تخصيص المظهر التلقائي
عند إنشاء مشروع باستخدام "استوديو Android"، يتم تطبيق مظهر "التصميم المتعدد الأبعاد" على تطبيقك من خلال
تلقائيًا، كما هو موضح في ملف styles.xml
الخاص بمشروعك. النمط AppTheme
هذا
لتوسيع مظهر من مكتبة الدعم وتضمين إلغاءات لسمات الألوان المستخدمة
حسب عناصر واجهة المستخدم الرئيسية، مثل شريط التطبيق
زر الإجراء العائم، إذا كان مستخدَمًا. لذا، ينبغي أن
تخصيص تصميم ألوان التطبيق بسرعة من خلال تعديل الألوان المقدَّمة.
على سبيل المثال، يبدو ملف styles.xml
مشابهًا لما يلي:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
قيم النمط هي في الواقع إشارات إلى
color resources، محددة في
لملف res/values/colors.xml
الخاص بالمشروع. هذا هو الملف الذي تعدِّله لتغيير الألوان.
يمكنك الاطّلاع على
نظرة عامة على الألوان في التصميم المتعدد الأبعاد
لتحسين تجربة المستخدم باستخدام ألوان ديناميكية وألوان مخصّصة إضافية.
بعد معرفة الألوان، عدِّل القيم في res/values/colors.xml
:
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Color for the app bar and other primary UI elements. --> <color name="colorPrimary">#3F51B5</color> <!-- A darker variant of the primary color, used for the status bar (on Android 5.0+) and contextual app bars. --> <color name="colorPrimaryDark">#303F9F</color> <!-- a secondary color for controls like checkboxes and text fields. --> <color name="colorAccent">#FF4081</color> </resources>
ويمكنك بعد ذلك إلغاء أي أنماط أخرى تريدها. على سبيل المثال، يمكنك تغيير النشاط لون الخلفية على النحو التالي:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="android:windowBackground">@color/activityBackground</item> </style>
للحصول على قائمة بالسمات التي يمكنك استخدامها في المظهر، يمكنك الاطّلاع على جدول السمات على
R.styleable.Theme
عند الإضافة
لطرق العرض في التخطيط الخاص بك، يمكنك أيضًا العثور على السمات من خلال النظر في "سمات XML"
في عرض مراجع الفئة. على سبيل المثال، تتوافق جميع طرق العرض
سمات XML من القاعدة View
الصف.
يتم تطبيق معظم السمات على أنواع معيّنة من الملفات الشخصية، وينطبق بعضها على جميع الملفات الشخصية. ومع ذلك،
بعض سمات الموضوعات المدرجة في
تسري R.styleable.Theme
على
نافذة النشاط، وليس طرق العرض في التخطيط. على سبيل المثال، تُغيّر windowBackground
تحدد خلفية النافذة وwindowEnterTransition
حركة انتقالية لاستخدامها عند
يبدأ النشاط. لمزيد من التفاصيل، يُرجى الاطّلاع على بدء.
نشاط باستخدام صورة متحركة.
توفّر مكتبة دعم Android أيضًا سمات أخرى يمكنك استخدامها لتخصيص المظهر.
تم تمديدها من Theme.AppCompat
، مثل السمة colorPrimary
المعروضة في
المثال السابق. تحقّق هذه الفيديوهات أفضل مشاهدة في
ملف attrs.xml
في المكتبة.
هناك أيضًا مظاهر مختلفة متاحة من مكتبة الدعم قد ترغب في توسيعها
بدلاً من تلك المعروضة في المثال السابق. أفضل مكان لرؤية الموضوعات المتاحة هو
الـ
ملف themes.xml
في المكتبة.
إضافة أنماط خاصة بالإصدار
إذا أضاف إصدار جديد من Android سمات المظهر التي تريد استخدامها، يمكنك إضافتها إلى المظهر.
مع الحفاظ على توافقها مع الإصدارات القديمة. كل ما تحتاج إليه هو ملف styles.xml
آخر
في دليل values
يتضمن الحقل
إصدار المورد
المؤهِّل:
res/values/styles.xml # themes for all versions res/values-v21/styles.xml # themes for API level 21+ only
بما أنّ الأنماط في ملف values/styles.xml
متوفِّرة لجميع الإصدارات،
يمكن أن تكتسبها المظاهر في values-v21/styles.xml
. هذا يعني أنه يمكنك تجنب
تكرار الأنماط بالبدء بـ "base" ثم توسيعها في الإصدار
الأنماط.
على سبيل المثال، لتوضيح عمليات نقل النوافذ للإصدار 5.0 (المستوى 21 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يجب
لاستخدام سمات جديدة. لذلك، يمكن أن يبدو المظهر الأساسي في res/values/styles.xml
بالشكل التالي:
التالي:
<resources> <!-- Base set of styles that apply to all versions. --> <style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/primaryColor</item> <item name="colorPrimaryDark">@color/primaryTextColor</item> <item name="colorAccent">@color/secondaryColor</item> </style> <!-- Declare the theme name that's actually applied in the manifest file. --> <style name="AppTheme" parent="BaseAppTheme" /> </resources>
بعد ذلك، أضِف الأنماط الخاصة بالإصدار في res/values-v21/styles.xml
على النحو التالي:
<resources> <!-- extend the base theme to add styles available only with API level 21+ --> <style name="AppTheme" parent="BaseAppTheme"> <item name="android:windowActivityTransitions">true</item> <item name="android:windowEnterTransition">@android:transition/slide_right</item> <item name="android:windowExitTransition">@android:transition/slide_left</item> </style> </resources>
يمكنك الآن تطبيق AppTheme
في ملف البيان، وسيختار النظام الأنماط
لكل إصدار من إصدارات النظام.
لمزيد من المعلومات حول استخدام الموارد البديلة للأجهزة المختلفة، يُرجى الاطّلاع على توفير موارد بديلة:
تخصيص أنماط التطبيقات المصغّرة
لكل تطبيق مصغّر في إطار العمل ومكتبة الدعم نمط تلقائي. على سبيل المثال، عند
تصميم تطبيقك باستخدام مظهر من مكتبة الدعم، وهو مثال على
تم تصميم Button
باستخدام
النمط Widget.AppCompat.Button
. إذا كنت ترغب في تطبيق نمط أداة مختلف على
يمكنك إجراء ذلك باستخدام السمة style
في ملف التنسيق. على سبيل المثال،
فيما يلي يطبق نمط زر المكتبة بلا حدود:
<Button style="@style/Widget.AppCompat.Button.Borderless" ... />
إذا أردت تطبيق هذا النمط على جميع الأزرار، فيمكنك تعريفه في قسم
buttonStyle
على النحو التالي:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless</item> ... </style>
يمكنك أيضًا توسيع أنماط الأدوات، تمامًا مثل تمديد أي نمط آخر، ثم تطبيق نمط الأداة المخصّص في التنسيق أو المظهر
مصادر إضافية
لمزيد من المعلومات حول المظاهر والأنماط، اطّلِع على المراجع الإضافية التالية:
مشاركات المدونة
- نمط Android: المظاهر مقابل الأنماط
- نمط Android: سمات المظاهر الشائعة
- نمط Android: سمات المظاهر المفضّلة