KivyMD - تستمر الحياة


تحياتي!

سنتحدث اليوم عن واجهة المستخدم على نظام التشغيل Android في التطبيقات المكتوبة باستخدام إطار عمل Kivy لتطوير الأنظمة الأساسية. قد لا تكون على علم بهذا ، ولكن بالنسبة إلى Kivy ، توجد مكتبة KivyMD ، التي توفر أدوات نمط تصميم المواد لبرامجك. لسوء الحظ ، لا يوجد شيء من هذا النوع في نظام iOS الأساسي. علاوة على ذلك ، على ما يبدو ، ترك KivyMD من قبل خالقه ، حيث كان آخر التزام في اللفت قبل حوالي عام. ماذا تفعل وكيف تعيش معها ، اقرأ ...

في بعض الأحيان أثناء زيارة مستودع KivyMD الرسمي ، وجدت للأسف أنه لا يوجد شيء يتغير فيه ولن يتغير:



في مشاريعي في Kivy ، يمكنني تنفيذ أي واجهة مستخدم ، وهو ما أفعله في الواقع. لكنني اكتشفت مؤخرًا أنني أسحب جزءًا متزايدًا من الوحدات التي طبقتها من مشروع إلى آخر ، وهو أمر غير مريح للغاية. يتم نشر بعض هذه الحلول كمستودعات منفصلة على GitHub. ومع ذلك ، لا يزال من غير الملائم مشاركة كل هذا وإدارته واستخدامه ، نظرًا لوجود المزيد والمزيد من هذه الوحدات. تم اتخاذ القرار مؤخرًا نسبيًا: KivyMD ، كمشروع مفتوح المصدر ، يقع تحت طريقي. الآن شوكة هذه المكتبة هنا .

أصلحت الأخطاء التي تعرضت لها بعض الأدوات. على سبيل المثال ، تم حرمان عنصر واجهة المستخدم MDDropDownMenu من وظيفة التمرير وتحديد عنصر. الآن يبدو هذا:


بالإضافة إلى مجموعة من التصحيحات الأخرى ، أضيفت أدوات وعناصر تحكم جديدة كبيرة وليست كذلك. بالإضافة إلى MDFlatButton الموجودة ، MDRaisedButton ، MDIconButton MDFloatingActioButton ...


... نفذت عددًا من عناصر التحكم: MDRectangleFlatButton ، MDRectangleFlatIconButton ، MDRoundFlatIconButton ، MDRoundFlatButton ، MDFillRoundFlatButton ، والتي كانت مفقودة بشكل واضح في المجموعة:


أحاول أيضًا تبسيط العمل مع KivyMD قدر الإمكان. سيبدو استخدام عناصر التحكم الجديدة الموضحة أعلاه في ترميزك كما يلي:

MDRectangleFlatButton: text: "MDRectangleFlatButton" MDRectangleFlatIconButton: text: "I love Python" icon: "language-python" MDRoundFlatButton: text: "I love Python" icon: "language-python" MDRoundFlatIconButton: text: "I love Python" icon: "language-python" MDFillRoundFlatButton: text: "I love Python" 

في الآونة الأخيرة ، تمت إضافة منشور إلى مجموعة فكونتاكتي الخاصة بي حيث طلب شخص المساعدة في تنفيذ بطاقة الاتصال:
تحياتي!

سؤال عن التخطيط.

إنني أصنع بطاقة اتصال ولا يمكنني اختيار نوع التخطيط

أ) لم تمتد ، وتم ترتيب العناصر واحدًا تلو الآخر عموديًا

ب) لم تكن هناك فجوات كبيرة بين العناصر

حول BoxLayout المجربة ، StackLayout - لسبب ما الفجوات بين العناصر. أرفق شاشة النموذج ورمز كيلو فولت.

يمكن ملاحظة أنه بعد الكتلة الأولى مع الصورة الرمزية ، هناك فجوة ، بعد كتل النص أيضًا. كيفية الإصلاح بحيث تكون هناك مسافات متساوية في كل مكان ، بحيث تكون جميع العناصر من النوع valign: True؟
ها هي النتيجة:


لقد قمت بتصحيح الرمز ، وفي الوقت نفسه أضفت أداة بطاقة إلى KivyMD - MDUserAnimationCard ، والتي تنفذ هذا السلوك:


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


بعد ذلك ، ما عليك سوى إضافة فئة المحتوى الذي قمت بإنشائه إلى MDUserAnimationCard :

  def show_user_card(self): user_animation_card = MDUserAnimationCard( user_name="Lion Lion", path_to_avatar="./assets/african-lion-951778_1280.jpg", callback=main_back_callback) user_animation_card.box_content.add_widget(ContentForAnimCard()) user_animation_card.open() 

MDStackFloatingButtons ، المعروفة لك بالفعل من قبل المقالة ، انتقلت إلى KivyMD:


تم تبسيط استخدام هذه الأداة إلى أقصى حد:

  def example_add_stack_floating_buttons(self): def set_my_language(instance_button): toast(instance_button.icon) screen = self.main_widget.ids.scr_mngr.get_screen('stack buttons') screen.add_widget(MDStackFloatingButtons( icon='lead-pencil', floating_data={ 'Python': 'language-python', 'Php': 'language-php', 'C++': 'language-cpp'}, callback=set_my_language)) 

تم تنفيذ عدد من البطاقات الجاهزة للاستخدام ، على سبيل المثال ، للحصول على قائمة بالمشاركات ، وما إلى ذلك:


مثال للاستخدام:


 MDCardPost(text_post='Card with text', swipe=True, callback=callback)) 


 menu_items = [ {'viewclass': 'MDMenuItem', 'text': 'Example item %d' % i, 'callback': self.callback_for_menu_items} for i in range(2) ] MDCardPost( right_menu=menu_items, swipe=True, callback=callback text_post='Card with a button to open the menu MDDropDown')) 


 MDCardPost( likes_stars=True, callback=callback, swipe=True, text_post='Card with asterisks for voting.')) 


 buttons = ['facebook', 'vk', 'twitter'] text_post = \ "This is my favorite cat. He's only six months " "old. He loves milk and steals sausages :) " "And he likes to play in the garden." MDCardPost( source="./assets/kitten-1049129_1280.jpg", tile_text="Little Baby", tile_font_style="Headline", text_post=text_post, with_image=True, swipe=True, callback=callback, buttons=buttons)) 

تقدم تنزيل المحتوى من الخادم ، مدير ملفات بسيط ، أداة PullToUpdate:


عرض فيديو كامل لأدوات المكتبة:


بالعودة إلى البداية ، سأقول أن كل هذا مفيد فقط لنظام Android ، لأنه بالطبع لا يمكننا استخدام التصميم المتعدد الأبعاد في تطبيقات لمنصة iOS. وأود بشدة تكييف KivyMD لإنشاء واجهة مستخدم تبدو أصلية على نظام iOS أيضًا. من الناحية الفنية ، لا توجد حواجز لهذه المهمة. الصيد الوحيد هو أنني لا أملك جهاز iOS ، لذلك لا أعرف كيف تبدو واجهة المستخدم والرسوم المتحركة والتصميم الآخر. بالطبع ، هناك أدلة تصميم لنظام iOS ، ولكن الأدلة هي أدلة ، ويسرني أن يرسل شخص مهتم بتطوير مكتبة KivyMD العشرات من لقطات الشاشة والرسوم المتحركة للتصميم المرجعي للتطبيقات ضمن نظام iOS الأساسي. يكفي ، على سبيل المثال ، ما يتم تنفيذه حاليًا في KivyMD ، ولكن فقط للتفاح. من أجل سيم ، دعني آخذ إجازتي ، وأدق على رئيس الوزراء ، آمل ، كما هو الحال دائمًا ، ألا يكون عديم الفائدة.

Source: https://habr.com/ru/post/ar422721/


All Articles