"هل هذا الحوار الممل ضروري حقًا؟"
في هذه المقالة، قمت بإيجاز المبادئ الأساسية للتصميم متعدد الأبعاد وقدمت النصائح حول كيفية تنفيذها. تمت كتابة النص في أعقاب فصل دراسي رئيسي للمطورين، والذي قمنا نحن الروبوتات بتنظيمه معًا المكتب الروسيجوجل (ثينك موبايل).
ذات يوم، بدت جميع منتجات Google سيئة بطرق مختلفة. حتى منتج واحد لكل منصات مختلفةبدا غير متناسق.
بدأ كل شيء يتغير في عام 2011، عندما بدأت جوجل العمل الجاد لتوحيد الجزء المرئي من النظام البيئي لمنتجاتها وأطلقت عليه اسم مشروع كينيدي.
ما علاقة كينيدي بالأمر؟
الأسطورة هي كما يلي: بدأ الرئيس كينيدي برنامجًا لإرسال رجل إلى القمر (إذا كنت تعتقد أن هذه الرحلة قد حدثت على الإطلاق). ويعلن الرئيس الكبير في Google، لاري بيج، عن مبدأ مفاده أنه لا فائدة من تحسين المنتجات بنسبة 10٪ - بل يجب أن تكون أفضل بعشر مرات من منتجات المنافسين. إذا كنت ستطلق منتجًا، فاذهب مباشرة إلى القمر. هنا أيضًا تقرر إعادة كل شيء بشكل جذري.
في عام 2014، في مؤتمر I/O، تم تقديم نظام تصميم جديد، وهو نهج يسمى تصميم المواد. يتيح لك نظام التصميم الجديد إنشاء تجربة مستخدم متسقة على جميع الشاشات: سطح المكتب، والهواتف الذكية، والأجهزة اللوحية، والساعات، وأجهزة التلفزيون، والسيارات. بالنسبة لتطبيقات Android، يعد التصميم متعدد الأبعاد تطورًا للغة المرئية وإرشادات التصميم الخاصة بـ Holo. في نواح كثيرة هو أكثر من ذلك نظام مرن، والذي تم إنشاؤه مع الأخذ في الاعتبار حقيقة أن المصممين الآخرين سيستخدمونه - كان Google هو المستخدم الأول فقط.
يتيح لك التصميم متعدد الأبعاد اتباع نهج أكثر موضوعية في اتخاذ قرارات التصميم: كيف يبدو شيء ما، وكيف يعمل شيء ما، وكيف تتم الرسوم المتحركة، وما إلى ذلك. فهو يضع حدودا معقولة، ولكن ليس قيودا غير ضرورية.
لذلك، دعونا نتحرك بالترتيب.
ليست هناك حاجة للذهاب بعيدًا واستخدام الملمس أو تطبيق التدرجات لتصوير الضوء والظل. ليست هناك حاجة لإعطاء خصائص بصرية للجلد مثل تلك الموجودة في باب شقة الجدة - فالظل الأنيق يمكن أن يعبر عن الكثير. لكن كل سطح له ارتفاعه الخاص - وهو موقع على المحور Z وكل سطح يلقي بظلاله على الجزء السفلي، تمامًا كما هو الحال في العالم الحقيقي.
يوفر العمق أيضًا أدلة حول التفاعل. هنا، أثناء قيام المستخدم بالتمرير، يلتصق البلاط الأخضر بالطبقة العليا ويتم إضافة الظل. وهذا يدل على أن "الحبر" لا يتحرك فحسب، بل خلفية بيضاءيقع أدناه ويتحرك بالكامل.
من المهم أن نلاحظ أن العمق له "قاع". من المفترض أنه مقيد بسمك الجهاز المحمول نفسه. وهذا يعني أنه إذا كان هناك سنتيمتر واحد على الهاتف الذكي من الزجاج إلى الجدار الخلفي، ولديك بطاقة ائتمان في الواجهة، فلا يمكنك ببساطة قلبه - فسوف يستقر على الزجاج والجدار الخلفي.
ملحوظة!
- يجب أن يكون العمق منطقيًا.اسأل نفسك السؤال: "لماذا هذا وليس غير ذلك؟" إذا لم يكن هناك إجابة، فمن المنطقي أن نبحث عن حل آخر.
- رعاية الخدمات اللوجستية.تكون الأزرار العائمة وأشرطة الأدوات ومربعات الحوار على ارتفاع معين. في بعض الأحيان يحتاجون إلى التحرك على طول المحور Z لتجنب الاصطدامات عند حدوث شيء ما. عليك أن تكون حذرًا للغاية مع تصميم الرقصات هذا.
- لا حاجة للضغط على الزر.الزر العائم هو عنصر مميز للغاية. يعتقد الكثير من الناس أن الأمر يستحق إضافته إلى الواجهة: ويصبح هذا على الفور التصميم متعدد الأبعاد. ولكن يجب استخدامه فقط لإجراء رئيسي في تطبيقك. إذا كنت بحاجة إلى إغلاق نافذة أو تأكيد إجراء ما، فلن تحتاج إلى استخدام زر عائم. هناك عناصر أخرى لهذا.
- ليس كل شيء يجب أن يكون على البطاقة.إذا كان الكائن يحتوي على العديد من الأشكال ويحتوي على الكثير من المحتوى المختلف، فإن البطاقة مناسبة. وإذا لم يكن الأمر كذلك، فربما يكون من الأفضل القيام بذلك نص عاديأو قائمة نصية؟
- هل هذا الحوار الممل ضروري حقًا؟لقد حاول مصممو Google تحسين مربعات الحوار، لكن الأوراق السفلية لا تزال أكثر ملاءمة لمعظم المهام. يوجد أيضًا بارات للوجبات الخفيفة. مربعات الحوارهناك حاجة فقط لطرح سؤال للمستخدم.
- استخدام توسيع القائمة.هذا نمط تم الاستخفاف به، ولكنه مادة تمامًا ويحل المشكلة جيدًا.
نظرًا لأننا في التصميم متعدد الأبعاد نسمي الأسطح "الورق الرقمي"، فكل ما يتم وضعه عليه - النصوص والصور والأيقونات - تتم طباعته باستخدام "الحبر الرقمي". ويستخدم تصميم المواد المبادئ الكلاسيكية لتصميم الطباعة في تصميم الواجهات.
لدينا رأس كبير ومجموعة من العناصر الأصغر التي تتميز بتشبعها - والأكثر أهمية منها تكون أغمق. في الوقت نفسه، نميز بوضوح المجموعة بسبب حقيقة أن بعض المستطيلات تقع قريبة، وهناك مسافة بادئة كبيرة بين الكتل. بشكل عام، كل شيء في أفضل التقاليد!
يحتوي موقع الويب google.com/design/spec على لوحة خطوط قياسية يمكنك استخدامها بأمان. تستخدم اللوحة خط Roboto، ولكن يمكن استبداله بخط التوقيع الخاص بك لدعم العلامة التجارية. من المهم اختبار كل شيء بعناية، حيث قد يعمل عرض الخطوط بشكل مختلف على الأجهزة المختلفة. عادة خطوط OTFالعمل بشكل أفضل من TTF.
هناك مبدأ آخر من عالم الطباعة يتناسب جيدًا مع التصميم متعدد الأبعاد وهو الطباعة المتناقضة - وهو تباين ملحوظ حقًا بين أحجام خطوط العنوان ونص التنضيد. إنه جميل ويسلط الضوء على الشيء الرئيسي جيدًا.
لكن السمة المميزة الرئيسية لوضع المحتوى وفقًا لمبادئ التصميم متعدد الأبعاد هي وضع الأدلة الرئيسية. فهي تضع مسافات بادئة من حواف الشاشة، وتقوم بتنظيم المعلومات والتحكم في نظرة المستخدم. إذا كنت على دراية بتصميم المنشورات متعددة الصفحات أو قرأت Tschichold، فمن المحتمل أنك تعرف الكثير عن الشبكة والهوامش وتفهم من أين تأتي الأرجل.
في الواقع، نرى عمودًا من النص في المنتصف وهامشًا كبيرًا على اليسار، مما يجعل من الممكن التركيز على المحتوى الرئيسي وترك العناصر الداعمة في الهوامش.
كما هو الحال في تصميم الطباعة، يعد اللون وسيلة مهمة للتعبير في تصميم الواجهة. في السابق لون أندرويدكان شيئًا إضافيًا، لكنه يلعب الآن دورًا أكثر بروزًا. في التصميم متعدد الأبعاد، تتكون لوحة الألوان الافتراضية لأي تطبيق من اللون الأساسي ولون التمييز.
يتم استخدام الشكل الرئيسي للمساحات الكبيرة مثل شريط الحركة، ويتم رسم شكله الداكن شريط الحالة. يتم استخدام لون تمييز أكثر سطوعًا في النقاط الموجودة على عناصر التحكم، والأزرار، والخطوط، والمؤشرات، وما إلى ذلك. تم تصميم لون التمييز لجذب انتباه المستخدم إلى العناصر الأساسية، مثل الزر العائم.
كم لون للاستخدام؟ يتم وضع اللكنات بشكل نقطي وبكميات صغيرة. هناك قاعدة أساسية بسيطة لتلوين بقية الواجهة. عندما يكون هناك الكثير من النص، على سبيل المثال، هذه قائمة بريدية، يجب عليك مغادرة شريط التطبيق مقاس معياريوتلوينه للسماح للمستخدم بالتركيز على المحتوى. إذا لم يكن هناك الكثير من المحتوى، على سبيل المثال، عرض تفصيلي لعنصر واحد أو صورة أو آلة حاسبة، فهذه فرصة ممتازة لاستخدام مربعات ملونة كبيرة - 2 أو 3 أضعاف ارتفاع شريط التطبيق.
يدعم Android مكتبة تسمى Palette تتيح لك استخراج الألوان من الصور. أي أنه من الممكن تلوين الواجهة ديناميكيًا بناءً على الرسوم التوضيحية للصور الموجودة في التطبيق.
التقطنا صورة، وحددت الخوارزمية منها 6 ألوان بخصائص مختلفة:
- هناك 3 ألوان غنية و3 ألوان صامتة؛
- وهي مقسمة إلى نغمات فاتحة وقياسية ومظلمة؛
- كل لون خلفية له لون النص الخاص به، والذي يمكن استخدامه أيضًا.
وأخيرا كما في تصميم وطباعةيشجع التصميم متعدد الأبعاد على استخدام التصوير الفوتوغرافي والتوضيح بكل مجده. يتم وضع الصور في الغالب بدون إطارات، وغالبًا ما يتم ذلك "من خلال الصورة مباشرة". حتى شريط الحالة أصبح شفافًا خصيصًا حتى لا يتدخل. علاوة على ذلك، فإن كل قطرة من “الحبر الرقمي” على الشاشة لها وظيفة؛
ملحوظة!
- العلامة التجارية بكل سرور.إن Google في وضع أفضل لاستخدام الألوان الزاهية كعلامة تجارية، ولكن لا ينبغي اعتبار ذلك مشكلة. يمكنك اختيار الألوان من دفتر العلامة التجارية للشركة واستخدام الشعار بشكل عام.
- لا تنس المسافات البادئة و"امنح بعض الهواء".الشبكة الأساسية التي تبلغ 8dp والهامش الأيسر 72dp هي القاعدة إلى حد كبير. دع المحتوى يكون جيدًا ومجانيًا.
- الصور المعبرة تصنع الفرق.الصور الفوتوغرافية والرسوم التوضيحية هي خيارنا كوسيلة للتعبير.
في العالم الحقيقي، لا يمكن للأشياء أن تظهر من العدم أو تختفي في العدم. وهذا من شأنه أن يسبب البلبلة وإرباك الناس. ولهذا السبب يستخدم التصميم متعدد الأبعاد رسومًا متحركة ذات معنى لإظهار ما حدث بالضبط.
مثال 1.يوضح الرسم المتحرك أن هذه البطاقة بالذات، عند النقر عليها، ظهرت في المقدمة، وانفتحت، وأصبحت المزيد من المعلومات مرئية.
مثال 2.حدث في التقويم، بعد الضغط عليه، يخرج من السطح ويتحول إلى طبقة منفصلةتبدأ "الورقة" في التحول ويتم الكشف عنها في شكل معلومات مفصلة عن الحدث.
النقطة المثيرة للاهتمام هي أن الحركة النشطة تجذب العين - وهذا أمر طبيعي بالنسبة لرؤيتنا. بمساعدة الرسوم المتحركة، نتحكم في انتباه المستخدم.
نظرًا لأن عمق الواجهة محدود بسمك الجهاز، فيجب إجراء جميع تحويلات الكائنات في المستوى. وهذا يعني أيضًا أن الرسوم المتحركة للتحويل يجب أن تكون غير متماثلة - أي أن التغيير في عرض الكائن وارتفاعه يجب أن يكون مستقلاً. وإلا ينشأ وهم الاقتراب أو الابتعاد عن المشاهد وعلى مسافة كبيرة جدًا.
آخر جدا مبدأ مهمالرسوم المتحركة في تصميم المواد - رد فعل على تصرفات المستخدم. حيثما أمكن، يجب أن يكون مركز تغييرات الواجهة هو لمس شاشة الجهاز. على سبيل المثال، موجة تظهر وتنتقل من نقطة ملامسة الإصبع. يتم تنفيذ هذا التأثير دون مشاكل في Android L.
في Android L، يمكننا تحريك كل عنصر من عناصر التطبيق - سواء كان ذلك انتقالًا بين المحتوى أو أيقونات الإجراءات الصغيرة. تعتبر كل تفاصيل التطبيق مهمة، وتضيف الرسوم المتحركة الدقيقة مزيدًا من التفاصيل والاستجابة لكل إجراء يقوم به المستخدم.
وأخيرا، المبدأ الرئيسيالرسوم المتحركة: يجب أن تكون الحركة سريعة وواضحة. على عكس التسارع العادي في البداية والتباطؤ في النهاية، فإن منحنى الرسوم المتحركة في التصميم متعدد الأبعاد أكثر طبيعية وإثارة للاهتمام. تتفاعل الكائنات بشكل أسرع وتصل إلى الحالة المستهدفة، وتعود بشكل أسرع، ولكنها تستغرق وقتًا أطول قليلاً للوصول إلى حالة الراحة في النهاية. ونتيجة لذلك، يتعين على المستخدم الانتظار لفترة أقل (أقل إزعاجًا). في الوقت نفسه، عندما يكون الكائن قد ترك بالفعل مجال اهتمامات المستخدمين، فإنه يسمح لنفسه بالتصرف بشكل أكثر طبيعية.
ملحوظة!
- لا تترك الرسوم المتحركة لآخر.لا ينبغي ترك الرسوم المتحركة حتى النهاية - فهي يمكن أن تكون عاملاً أساسيًا في تجربة المستخدم ويجب التفكير فيها مسبقًا.
- اعرف حدودك.الكثير من الرسوم المتحركة أمر سيء أيضًا. تحكم في نفسك وتذكر أنه يجب أن يكون ذا معنى.
ملحوظة!
- ليست هناك حاجة دائمًا إلى درج التنقل.تستخدم Google نظام التنقل المنزلق للخارج في تطبيقاتها في كثير من الأحيان، لذا قد تراه فيها أمثلة مختلفة. لكن لدى Google الكثير من المشكلات التي يمكن حلها بمساعدتها: نشر المساعدة والإعدادات وتسجيل الدخول/الخروج ومعلومات المستخدم وما إلى ذلك. إذا كانت لديك مهام مماثلة، فكل شيء على ما يرام، ولكن إذا كنت تصنع أداة بسيطة، فلا يستحق الأمر ذلك.
- كن أكثر جرأة وذكاءً مع أشرطة الأدوات.القدرة على تغيير حجم شريط الأدوات ديناميكيًا، مما يجعله مزدوجًا أو ثلاثيًا هو أمر رائع ومريح للغاية. يخشى معظم المصممين التعامل مع هذا الأمر واختيار مقاس واحد مرة واحدة وإلى الأبد، ولكن هنا يمكنك ويجب أن تكون أكثر جرأة.
- ليست هناك حاجة لإنشاء غيتو من الزاوية السفلية لزر عائم.يمكن أن يكون الزر العائم في أي مكان: أسفل، أعلى، يمين، يسار. بالطبع، في الزاوية قد يكون من المناسب الوصول إليها، ولكن هذا ليس كذلك الخيار الوحيد. يمكن نقل الزر من مكان إلى آخر حسب المهمة.
- كل من الهواتف الذكية والأجهزة اللوحية؛ عموديا وأفقيا.نطاق أجهزة Android كبير، وهذا لا يجعل الحياة أسهل للمطورين. ولكن الحقيقة هي أن المستخدمين لديهم كل هذه الأجهزة التي يديرونها بهذه الطريقة وذاك (حتى لو نحن نتحدث عنحول الهواتف الذكية). هذه اللحظة تحتاج إلى العمل.
العلامات: إضافة العلامات
هل أنت، مثل جوجل، تحمل هاتفك أفقيًا فقط؟
في الوضع الرأسي، يتم استخدام 50-70% فقط من الشاشة
هناك الكثير من النص على هذه الشاشة.
هل هذا كثير من النص؟ ماذا فعل تويتر بالناس؟
يستمر الإصداران 5 و6 من روبوتات Android في السير بفخر عبر الهواتف الذكية والأجهزة اللوحية للمستخدمين السعداء، متألقين بجمال التصميم متعدد الأبعاد. في الوقت نفسه، يجب أن نشيد بجوجل، لم ينس أحد الأجهزة القديمة، لقد جربوا أيضًا جلود التصميم متعدد الأبعاد، وإن لم يكن ذلك في كليا. سنتحدث اليوم عن كيفية عمل كل هذا على الأجهزة التي تعمل بإصدارات Android من الثاني إلى الرابع. إذا كنت تقوم بتطوير تطبيقات حصرية لنظام Android 6، فستكون المعلومات الواردة أدناه مفيدة لك أيضًا.
تصميم المواد - التصميم برمجةوتطبيقات غرفة العمليات أنظمة أندرويدمن جوجل، تم تقديمه لأول مرة في مؤتمر Google I/O في عام 2014. تتمثل فكرة التصميم في إنشاء تطبيقات تفتح وتنهار مثل البطاقات المادية (أي الملموسة). مثل جميع الأشياء المادية، يجب أن تلقي بظلالها وأن يكون لديها بعض الجمود. وفقًا لفكرة مصممي Google، يجب ألا تحتوي التطبيقات على زوايا حادة، ويجب أن تنتقل البطاقات بين بعضها البعض بسلاسة وبشكل غير محسوس تقريبًا (الشكل 1).
بشكل عام، يسمح لك تأثير الظل بترتيب جميع العناصر بشكل مرئي على ارتفاعات مختلفة، أي يتم الحصول على مجموعة معينة من الطبقات (الشكل 2).
لا تقل أهمية مفهوم الزر العائم(زر الإجراء العائم)، يعكس الإجراء الرئيسي في الجزء أو النشاط. على سبيل المثال، في Gmail، تسمح لك هذه الأداة بإنشاء حرف جديد. يسمى هذا الزر عائمًا لأن موضعه غير ثابت (نعم، ليس فقط الزاوية اليمنى السفلية) ويمكن أن يتغير. علاوة على ذلك، يجب أن يكون هذا التغيير متحركًا بسلاسة وذات معنى، على سبيل المثال، عند تمرير مكون ListView أو تبديل جزء FAB، يمكن للزر "الانتقال" خارج الشاشة أو "الذوبان".
لا يسمح لنا تنسيق مقال المجلة بوصف جميع الفروق الدقيقة في التصميم متعدد الأبعاد ( من حيث تنسيق الورق، لقد أفسدت مقالًا كاملاً ونصف :). - تقريبا. إد.)، خاصة أنه لا يمكن تنفيذ جميعها من خلال مكتبات التوافق في إصدارات ما قبل Lollipop من Android. الوضع أصعب في هذا الصدد مع الرسوم المتحركة. على سبيل المثال، لن نتمكن من رؤية تأثير التموج (دوائر متباينة عند الضغط على زر)، نظرًا لأن هذه الرسوم المتحركة يتم تنفيذها في الأجهزة وهي غير متوفرة للأجهزة القديمة. بالطبع، يمكن حل هذه المشكلة عن طريق مكتبات الطرف الثالث، لكننا سنتحدث عن ذلك في المرة القادمة.
يمكنك (بل وتحتاج إلى ذلك!) التعرف على أدلة التصميم متعدد الأبعاد الموجودة على الصفحة الرسمية موقع إلكترونيجوجل، والترجمة إلى اللغة الروسية متاحة على العنوان.
بعد إصدار Android 5، خضعت حزمة SDK الخاصة بشركة Google لتحديث مهم لمكتبة AppCompat (المعروفة سابقًا باسم ActionBarCompat)، والتي تلقت الإصدار السابع المعروف أيضًا باسم v7. أفضل ما في هذا الإصدار هو القدرة على استخدام عناصر التصميم متعدد الأبعاد الإصدارات السابقة Android - بدءًا من 2.1 (مستوى واجهة برمجة التطبيقات 7). أحد هذه العناصر هو عنصر واجهة المستخدم لشريط الأدوات، الذي حل محل ActionBar الممل - وهي لوحة تقع في الجزء العلوي من النشاط (نفس اللوحة التي يتم فيها تعليق "الهامبرغر" الذي يفتح القائمة الجانبية). بالإضافة إلى ذلك، أثر تصميم المواد الجديد على الآخرين العناصر القياسية: EditText، Spinner، CheckBox، RadioButton، Switch، CheckedTextView.
بالإضافة إلى ذلك، تمت إضافة مكتبات جديدة - RecyclerView (بديل رائع لـ ListView)، وCardView (بطاقة) وPalette (لوحة ديناميكية). بالمناسبة، تمت مناقشة هذه العناصر بالفعل في ديسمبر هاكر - ابحث عنها بشكل عاجل ولن نكررها.
يبدو أننا في الهدف، هذه هي السعادة، ولكن، على سبيل المثال، انظر عميل البريد Gmail في نفس نظام التشغيل Android 4، تبدأ ببطء في فهم أنه لا يمكنك برمجة مثل هذا التطبيق باستخدام AppCompat وحده. بعد كل شيء، ولسبب كوني، لا تحتوي مكتبة AppCompat على زر عائم - ربما يكون العنصر الرئيسي في تصميم المواد.
لحسن الحظ، فكرت Google بنفس الطريقة تمامًا، ولكن لسبب ما لم تكمل AppCompat، ولكنها قدمت تطبيقًا كاملاً مكتبة جديدةالتوافق - مكتبة دعم التصميم. كل شيء هنا ناضج: قائمة جانبية مريحة (عرض التنقل)، وزر عائم (زر الإجراء العائم)، ورسالة منبثقة (شريط الوجبات الخفيفة)، وشريط أدوات متحرك، وغير ذلك الكثير. بعد ذلك، سنقوم بتحميل جميع المكتبات إلى قاعدة معارفنا ونلقي نظرة فاحصة على هذه الابتكارات الرائعة.
أريد فقط أن أشير إلى أنه يمكن استخدام المكتبات والأدوات بشكل منفصل أو معًا.
لذلك، نقوم بتحديث SDK وإطلاقه بيئة تطوير أندرويدودعنا نبدأ بالبرمجة...
نظرًا لأننا نستخدم Android Studio، فيجب أن يتم استيراد الوحدات في قسم التبعيات في ملف build.gradle الخاص بالمشروع:
التبعيات (ترجمة fileTree(dir: "libs"، تشمل: ["*.jar"]) ترجمة "com.android.support:appcompat-v7:22.2.1" ترجمة "com.android.support:design:22.2.1" "ترجمة"com.android.support:recyclerview-v7:22.2.1" ترجمة "com.android.support:palette-v7:22.2.1" ترجمة "com.android.support:cardview-v7:22.2.1")
في وقت نشر المجلة، ستكون نسخة المكتبات ذات الرقم 23.1.1 متاحة بالفعل، ولكن هذا ليس مهمًا بالنسبة لنا. بالمناسبة، سيخبرك IDE برقم الإصدار الأحدث، وسيقوم أيضًا بتنزيله تلقائيًا من المستودع إذا كان مفقودًا.
لنبدأ بمكون مثير للإعجاب للغاية - CoordinatorLayout، والذي يسمح لك بربط عناصر واجهة المستخدم (الإحداثيات) الموضوعة فيه (في الواقع، CoordinatorLayout هو FrameLayout متقدم). ولتوضيح ذلك، في الشكل. يوضح الشكل 3 الحالة الأولية لجزء التطبيق. بمجرد البدء في التمرير عبر القائمة، سيعود حجم الرأس بسلاسة إلى الحجم التقليدي (تقليص)، مما يوفر مساحة للحصول على معلومات مفيدة (الشكل 4). وهذا هو كل ما يقال، مباشرة من خارج الصندوق، دون أي عكازات.
يظهر ترميز الجزء أدناه (على الرغم من الحجم، فإن الكود تافه تمامًا):
يمكنك أن ترى أن CoordinatorLayout له فرعين: AppBarLayout وحاوية FrameLayout. يمكن أن يحتوي الأخير على أي عناصر واجهة قابلة للتمرير: على سبيل المثال، RecyclerView أو ListView. في الشكل الموضح. 3 تطبيق في هذه الحاوية يوجد RecyclerView وزر (FAB). الآن سيعتمد كل من AppBarLayout وFrameLayout على بعضهما البعض عند التمرير، ولكن فقط إذا كان الأخير يحتوي على علامة خاصة تخطيط_behavior="@string/appbar_scrolling_view_behavior" التي تبدأ نقل اللمسات إلى AppBarLayout.
من الناحية الأيديولوجية، يذكرنا AppBarLayout إلى حد ما بالتخطيط الخطي العمودي، الذي يمكن أن تتصرف عناصره بشكل مختلف (اعتمادًا على العلامات) عند تمرير المحتوى. يستخدم المثال أعلاه عنصر واجهة المستخدم CollapsingToolbarLayout، وهو عبارة عن غلاف ملائم لمكون شريط الأدوات. في الواقع، تم تصميم CollapsingToolbarLayout خصيصًا للاستخدام داخل AppBarLayout. يتم تحديد حجم AppBarLayout نفسه عند توسيعه بواسطة معلمة Layout_height، وفي القائمة يساوي 192dp.
تحدد علامة Layout_scrollFlags سلوك التمرير للمكون. إذا لم تحدد التمرير، فسيظل AppBarLayout في مكانه وسيطفو المحتوى بعيدًا (تأثير مضحك). العلامة الثانية،exitUntilCollapsed ، تحدد بالضبط كيفية تمرير شريط الأدوات والمحتويات الأخرى. لسوء الحظ، من غير المجدي وصف الفرق بين الأعلام عن بعضها البعض بالكلمات، لذلك أرسلك إلى العنوان حيث يتم وصف جميع الخيارات بوضوح (مع الرسوم المتحركة). كما يقولون، من الأفضل أن نرى مرة واحدة...
تحدد المعلمة contentScrim="?attr/colorPrimary" لون الخلفية الذي تنتقل إليه صورة الخلفية عند طي CollapsingToolbarLayout. وسيلاحظ القارئ اليقظ ذلك في الشكل. 4 شريط الأدوات غير ملون على الإطلاق، وتظل الصورة المظللة قليلاً في مكانها. للحصول على هذا التأثير، تحتاج إلى تحديد ثابت @android:color/transparent.
وأخيرا، الحاجيات التي تحدد مباشرة مظهرجزء (نشاط)، - يتم تغليف شريط الأدوات ("الهمبرغر"، والرأس، وأزرار القائمة) وImageView (الخلفية) في CollapsingToolbarLayout. تضمن علامة Layout_collapseMode="parallax" الخاصة بـ ImageView تظليلًا سلسًا لصورة الخلفية عند طي شريط الأدوات. من التجربة أستطيع أن أقول أن المنظر لا يعمل على جميع الأجهزة.
قد يبدو كل ما سبق معقدًا وغير واضح، لكنه يمثل إضافة كبيرة هذا النهجهو أن كل المنطق تعاونيتم تعريف عناصر واجهة المستخدم في ملف العلامات، وليس في التعليمات البرمجية. بالمناسبة، بخصوص الأخير:
يقوم MainActivity من الفئة العامة بتوسيع AppCompatActivity ( شريط الأدوات الخاص mToolbar؛ الخاص CollapsingToolbarLayout mCollapsingToolbar؛ الخاص ImageView im؛ @Override protected void onCreate(Bundle saveInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mToolbar = (Toolbar) findViewById (R.id.toolbar); setSupportActionBar(mToolbar); mCollapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
هنا، في الواقع، كل التعليمات البرمجية! يقوم SetSupportActionBar بتحويل ActionBar إلى شريط الأدوات، مع الحفاظ على جميع خصائص وأساليب الأول تقريبًا. على وجه الخصوص، يتم تعيين العنوان باستخدام setTitle. يتوفر وصف كامل لأداة شريط الأدوات على الموقع الرسمي لمطوري Android.
بعد ذلك، ابحث عن ImageView للخلفية واستخدم مكتبة Picasso التابعة لجهة خارجية لتعيين الصورة المقابلة. أنا لست عادةً من ينتقد Google، لكن لا يمكنني مساعدة نفسي هنا. هل من المستحيل حقًا كتابة مكتبة قياسية عادية لتحميل الصور بعد كل هذا الوقت من وجود Android؟ بحيث لا تستدعي طريقة setImageResource نفاد الذاكرة للصور ذات الدقة العادية؟ تدعو الإرشادات إلى إنشاء تطبيقات مشرقة وأنيقة تحتوي على الكثير من الرسومات، ويتم تنفيذ شيء مثل تحميل الصورة بلا مبالاة. لا، بالطبع، يمكنك استخدام BitmapFactory، والتوصل إلى التخزين المؤقت، ولكن هذا الحل يتطلب فقط استخدامه مكتبة منفصلة، والذي يتم في الواقع في كل من Picasso وUniversalImageLoader. باختصار، الأمر غير واضح..
بار الوجبات الخفيفة صغير نافذة المعلوماتالموجود في أسفل النشاط (الشكل 5). بالإضافة إلى رسالة المعلومات، هناك زر مسطح صغير (ما يسمى بالإجراء) يسمح لك بالتفاعل مع المستخدم (على سبيل المثال، إلغاء حذف الرسالة). بعد انتهاء المهلة، يتم إغلاق شريط Snackbar تلقائيًا (تمامًا مثل مكون التوست التقليدي).
سيسمح لك الاشتراك بذلك فترة محددةاقرأ جميع المواد المدفوعة على الموقع. نحن نقبل الدفع البطاقات المصرفيةوالأموال الإلكترونية والتحويلات من حسابات مشغلي الهاتف المحمول.
ستتحدث هذه المقالة عن كيفية جعل تطبيقك ملموسًا، وإضافة ميزة البحث إليه، بالإضافة إلى بعض الأفكار حول نوع الإعلانات التي يجب استخدامها.
بشكل عام، خضع التطبيق لعدة تغييرات كبيرة في التصميم أثناء وجوده. قصة قصيرةكيف تم تغييره يظهر في لقطات الشاشة:
عند العمل باستخدام موارد الأيقونات لشاشات مختلفة، يساعد استوديو الأصول كثيرًا، والذي، من بين أمور أخرى، يتمتع أيضًا بتأثيرات جيدة للظل الطويل وتأثيرات أذن الكلب. بشكل عام، يعد استوديو الأصول أداة إنشاء رائعة ستوفر الكثير من الوقت عند العمل مع الأصول. أيضًا، باستخدام استوديو الأصول، تم إنشاء أيقونات مواد جديدة لشراء البيرة والتفاعل الاجتماعي:
إذا تم شراء البيرة، فسوف تظهر المنتجات المباعة في الزاوية اليمنى السفلية:
لقد خضعت أيقونة التطبيق أيضًا لبعض التغييرات، وكان علينا بالفعل فتح برنامج Photoshop والرسم:
لقد انتهى الجزء الأصعب؛ ولن نتحدث أكثر عن الموارد الرسومية.
سنقوم الآن بإنشاء العديد من السمات لتطبيقنا وإضافة FloatingActionButton. في المجلد قيم/المشروع في ملف theme.xml، سنصف موضوعي تصميم لتطبيقنا Light وDark:
theme.xml
سأخبرك الآن بكيفية تطبيق السمة على جميع أنشطة طلبك مرة واحدة. للقيام بذلك، تحتاج إلى جعل BaseActivity موروثًا من ActionBarActivity (لا يلزم الإعلان عنه في البيان ولا تحتاج إلى إنشاء ملف ترميز XML له). في طريقة onCreate() لهذا النشاط، نسميها setTheme() اعتمادًا على اختيار المستخدم في إعدادات التطبيق:
BaseActivity.java
تعمل الطبقة العامة BaseActivity على توسيع ActionBarActivity (السلسلة النهائية العامة الثابتة NAME_PREFERENCES = "mysetting"؛ السلسلة النهائية العامة الثابتة THEME_SWITCHER = "thmswtch"؛ int النهائي الثابت العام THM_SWTCHR_DFLT = 0؛ @Override protected void onCreate(Bundle saveInstanceState) (super.onCreate(savedInstanceState) SharedPreferences mSet = getSharedPreferences(NAME_PREFERENCES, context.MODE_PRIVATE); /** قم بتطبيق المظهر الداكن إذا تم تحديده في الإعدادات (افتراضيًا في تطبيق LightTheme) */ if(mSet.getInt(THEME_SWITCHER, THM_SWTCHR_DFLT) == 1 ) ( /** إذا كان الجهاز يحتوي على LOLLIPOP وأعلى، قم بتلوين شريط الحالة */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) ( getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow( setStatusBarColor(getResources().getColor(R.color.greyPrmrDark1)) ) setTheme(R.style.DarkTheme)) ) .
عند اختيار مجموعات الألوان لموضوع ما في نمط المادة، يمكن أن يكون مصدر Materialpalette.com مفيدًا جدًا، حيث يقدم لوحة ألوان كاملة للموضوع في الظلين الرئيسيين اللذين تختارهما.
للإضافة على اليسار أيقونات مستديرةمع وجود نص في كل عنصر قائمة، تعد مكتبة TextDrawable مثالية، وهي سهلة الاستخدام وتسمح لك بإنشاء ليس فقط أيقونات مستديرة من نفس النوع (كما في لقطات الشاشة)، ولكن أيضًا أيقونات بأشكال وألوان وخطوط مختلفة وحتى إضافة الرسوم المتحركة لهم.
مثال على استخدام TextDrawable في محول القائمة الرئيسي للتطبيق
TextDrawable drawable = null; if(position==0) drawable = TextDrawable.builder().beginConfig().bold().endConfig().buildRound("dx", context.getResources().getColor((curr_theme==1) ? R. color.mn_dvdr_dark: R.color.mn_dvdr_lght)); if(position==1) drawable = TextDrawable.builder().beginConfig().bold().endConfig().buildRound("lim",context.getResources().getColor((curr_theme==1) ? R. color.mn_dvdr_dark: R.color.mn_dvdr_lght));
مثال على استخدام FloatingActionButton
FloatingActionButton رائع؛ ListView MainListView; تخطيط البحث الخطي؛ SearchView searchView; ... searchLayout = (LinearLayout) findViewById(R.id.search_view); searchView = (SearchView) findViewById(R.id.search); MainListView = (ListView) findViewById(android.R.id.list); fab = (FloatingActionButton) findViewById(R.id.fab); // إرفاق القوات المسلحة البوروندية إلى MainListView. // الآن، عند تمرير القائمة لأسفل، ستختفي القوات المسلحة البوروندية، وعند التمرير لأعلى، ستظهر القوات المسلحة البوروندية.attachToListView(MainListView); fab.setShadow(true); fab.setOnClickListener(new View.OnClickListener() ( @Override public void onClick(View v) ( Animation openSearch = AnimationUtils.loadAnimation(context, R.anim.search_down); searchLayout.startAnimation(openSearch); searchLayout.setVisibility(View. VISIBLE); AnimationUtils.loadAnimation(context, R.anim.s_down); fab.startAnimation(hideFab); ); ...
يحتوي الجدول على عمودين. العمود الأول (KEY_INPUT) عبارة عن قائمة بجميع أسماء الأقسام والمصطلحات الموجودة في الدليل، أي أنها قائمة الطلبات الممكنةالمستخدمين. العمود الثاني (KEY_ANKER) عبارة عن قائمة بملفات html ذات نقاط ارتساء (أي الملفات والمواضع في هذه الملفات) المقابلة لهذه الطلبات. أما بالنسبة لأي شخص آخر جداول سكليتييتم الحصول على البيانات الافتراضية والعادية من جداول FTS باستخدام استعلامات SELECT:
String query = "SELECT docid as _id،" + KEY_INPUT + "،" + KEY_ANKER + " FROM " + FTS_VIRTUAL_TABLE + " WHERE " + KEY_INPUT + " MATCH "" + inputText + ""؛"؛
عند إدخال استعلام نصي، يتم البحث في جدول FTS ويتم تقديم خيارات للمستخدم في القائمة المنسدلة. عند تحديده، يتم الانتقال إلى القسم المطلوب باستخدام المرساة المقابلة. يظهر المبدأ في الشكل أدناه:
SearchDbAdapter.java
فئة عامة SearchDbAdapter (سلسلة نهائية ثابتة خاصة DATABASE_NAME = "mhdb"؛ سلسلة نهائية ثابتة خاصة FTS_VIRTUAL_TABLE = "srcht"؛ نهائي ثابت خاص DATABASE_VERSION = 1؛ سلسلة نهائية ثابتة عامة KEY_INPUT = "rqst"؛ سلسلة نهائية ثابتة عامة KEY_ANKER = "ankr" "؛ سلسلة نهائية ثابتة خاصة DATABASE_CREATE = "إنشاء جدول افتراضي " + FTS_VIRTUAL_TABLE + " USING fts3(" + KEY_INPUT + ""، "+ KEY_ANKER + ")؛"؛ سياق نهائي خاص mCtx؛ // صفيف مع استعلامات البحث(المواضيع والأقسام الموجودة في الملف) public static Final String search_arr = ("data1 request 1"، "data1 request 2"، "data2 request 3"، "data2 request 4")؛ // مصفوفة تحتوي على ملفات html المقابلة لها مع نقاط ارتساء (يتم تخزين الملفات في مجلد أصول المشروع) public static Final Stringnchors_arr = ("file1.html#an1"، "file2.html#an2"، "file1.html#" an3"، "file1.html#an4"); فئة ثابتة خاصة DatabaseHelper تمتد SQLiteOpenHelper ( DatabaseHelper(Context context) ( super(context, DATABASE_NAME, null, DATABASE_VERSION);) @Override public void onCreate(SQLiteDatabase db) ( db.execSQL(DATABASE_CREATE); int LNGTH = search_arr.length; ContentValues initValues = new ContentValues(); for(int i=0; i
شراء البيرة أمر سهل مع
يتيح لك مفهوم تصميم المواد تطوير التطبيقات الملائمة والممتعة للاستخدام.
يجمع التصميم متعدد الأبعاد بين أفضل الممارسات في التصميم والمعايير المقبولة عمومًا والجاذبية البصرية. كل هذا يتيح لك إنشاء رسومات فريدة للتطبيقات تتوافق مع تصميم الواجهة على الأجهزة. بعد التعرف على تصميم المواد، يرغب المستخدمون في رؤية هذا النمط في جميع التطبيقات. اتبع توصياتنا لتطوير واجهات جميلة وسهلة الاستخدام وبديهية.
تم عرض التصميم متعدد الأبعاد في مؤتمر مطوري Google I/O في صيف عام 2014. وفقا للعديد من مصممي UX، قدمت الشركة لأول مرة بديلا حقيقيا لإرشادات Apple. أعدت The Verge قائمة بعشرة تطبيقات Android والتي تعد أمثلة جيدة لأسلوب تصميم المواد.
تعتمد إرشادات تصميم المواد على أشكال بسيطة ومقتضبة وعناصر رسومية. في إرشادات Google، تفتقر الكائنات إلى الحجم والتفاصيل الصغيرة والتفاصيل الشاملة.
التطبيق العملي الأول تصميم الموادتلقيتها في خدمة Google Now. أصبح هذا النمط هو الأساس لنظام التشغيل Android 5.0، المعروف أيضًا باسم Android Lollipop.
قاذفة بسيطة لنظام التشغيل أندرويد. يضيف Action Launcher 3 "قائمة سريعة" للوصول إلى التطبيقات، ويمكنه تغيير تصميم الواجهة وصورة الخلفية والقائمة والمزيد.
قام عميل Twitter البديل للهواتف الذكية أو الأجهزة اللوحية التي تعمل بنظام Android بتحديث رسوماته ورسومه المتحركة وفقًا لإرشادات تصميم المواد.
قام قارئ RSS لخدمة Feedly أيضًا بتحديث واجهته وفقًا لإرشادات Google.
كان مطورو مدير الملفات أول من قام بتحديث واجهة الخدمة - ظهرت الخزانة في تصميم المواد حتى قبل الإصدار الرسمي لنظام التشغيل Android Lollipop. يتيح لك التطبيق إدارة الملفات على هاتفك الذكي.
أحد أفضل الأمثلة، وفقًا لمحرري The Verge، على تطبيق مفهوم التصميم متعدد الأبعاد. يستعير Inbox الفكرة من Mailbox عند بدء التشغيل، والذي يقدم كل بريد إلكتروني وارد كمهمة. الخدمة متاحة عن طريق الدعوة.
تطبيق بسيط لتوقعات الطقس. لقد قدم المطورون القدرة على تثبيت عنصر واجهة مستخدم - أيضًا بأسلوب التصميم متعدد الأبعاد.
تطبيق متعدد المنصات لإنشاء ملاحظات "سريعة". في الإصدار الأخير، أعاد المطورون تصميم الواجهة وفقًا لإرشادات Google الجديدة.
تم تحديث تطبيق Google آخر في التصميم متعدد الأبعاد. يمكن للمستخدمين تغيير ألوان الحوار وتخصيص الإشعارات والمزيد.