Grüße!
Heute werden wir über die Benutzeroberfläche unter Android in Anwendungen sprechen, die mit dem plattformübergreifenden Entwicklungsframework von Kivy geschrieben wurden. Möglicherweise haben Sie nichts davon gewusst, aber für Kivy gibt es die KivyMD-Bibliothek, die Widgets im Material Design-Stil für Ihre Programme bereitstellt. Leider gibt es unter der iOS-Plattform nichts dergleichen. Darüber hinaus wurde KivyMD anscheinend von seinem Schöpfer verlassen, da das letzte Commit in der Rübe vor etwa einem Jahr erfolgte. Was zu tun ist und wie man damit lebt, lesen Sie weiter ...
Beim gelegentlichen Besuch des
offiziellen KivyMD-Repositorys stellte ich leider fest, dass sich daran nichts änderte und sich auch nicht ändern würde:
In meinen Kivy-Projekten kann ich jede Benutzeroberfläche implementieren, was ich auch tue. Aber kürzlich habe ich festgestellt, dass ich einen zunehmenden Teil der von mir implementierten Module von Projekt zu Projekt ziehe, was furchtbar unpraktisch ist. Einige dieser Lösungen werden als separate Repositorys auf GitHub veröffentlicht. Es ist jedoch immer noch nicht bequem, all dies zu teilen, zu verwalten und zu verwenden, da es immer mehr solcher Module gibt. Die Entscheidung wurde vor relativ kurzer Zeit getroffen: KivyMD als Open Source-Projekt steht unter meiner Fittiche. Jetzt ist eine Abzweigung dieser Bibliothek
hier .
Ich habe Fehler behoben, die bei einigen Widgets aufgetreten sind. Beispielsweise wurde dem MDDropDownMenu-Widget die Funktion zum Scrollen und Auswählen eines Elements entzogen. Jetzt sieht es so aus:
Zusätzlich zu einer Reihe anderer Korrekturen, große und nicht große, wurden neue Widgets und Steuerelemente hinzugefügt. Zusätzlich zu den vorhandenen
MDFlatButton, MDRaisedButton, MDIconButton MDFloatingActioButton ...
... Ich habe eine Reihe von Steuerelementen implementiert:
MDRectangleFlatButton, MDRectangleFlatIconButton, MDRoundFlatIconButton, MDRoundFlatButton, MDFillRoundFlatButton , die im Kit eindeutig
fehlten :
Ich versuche auch, die Arbeit mit KivyMD so weit wie möglich zu vereinfachen. Die Verwendung der oben in Ihrem Markup beschriebenen neuen Steuerelemente sieht folgendermaßen aus:
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"
Kürzlich wurde meiner VKontakte-Gruppe ein Beitrag hinzugefügt, in dem eine Person um Hilfe bei der Implementierung einer Kontaktkarte gebeten hat:
Grüße!
Frage zum Layout.
Ich erstelle eine Kontaktkarte und kann den Layouttyp nicht auswählen
a) dehnte sich nicht und die Elemente wurden vertikal nacheinander angeordnet
b) Es gab keine großen Lücken zwischen den Elementen
Über BoxLayout versucht, StackLayout - aus irgendeinem Grund die Lücken zwischen den Elementen. Ich lege den Bildschirm des Formulars und den kv-Code bei.
Es ist zu sehen, dass nach dem ersten Block mit einem Avatar eine Lücke entsteht, auch nach Textblöcken. Wie kann man das beheben, damit überall gleiche Leerzeichen vorhanden sind, sodass alle Elemente vom Typ valign sind: True?
Hier ist das Ergebnis:
Ich habe den Code korrigiert und gleichzeitig ein Karten-Widget zu KivyMD hinzugefügt -
MDUserAnimationCard , das dieses Verhalten implementiert:
Sie erstellen lediglich Inhalte, die unter der Benutzerkarte angezeigt werden. Die Bildlauffunktion für den Inhalt wird automatisch angewendet, wenn seine Höhe den verbleibenden Platz auf dem Bildschirm überschreitet:
Fügen Sie als Nächstes einfach die Klasse des von Ihnen erstellten Inhalts zur
MDUserAnimationCard hinzu :
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, die Ihnen bereits im
Artikel bekannt sind , wurden nach KivyMD migriert:
Die Verwendung dieses Widgets wurde ebenfalls maximal vereinfacht:
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))
Eine Anzahl gebrauchsfertiger Karten wurde implementiert, beispielsweise für eine Liste von Posts usw.:
Anwendungsbeispiel:
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))
Fortschritt beim Herunterladen von Inhalten vom Server, einem einfachen Dateimanager, PullToUpdate-Widget:
Vollständige Videodemonstration von Bibliotheks-Widgets:
Zurück zum Anfang: Ich sage, dass dies alles nur für Android gut ist, da wir Material Design natürlich nicht in Anwendungen für die iOS-Plattform verwenden können. Und ich würde KivyMD sehr gerne anpassen, um eine Benutzeroberfläche zu generieren, die auch unter iOS nativ aussieht. Technisch gibt es keine Hindernisse für diese Aufgabe. Der einzige Haken ist, dass ich kein iOS-Gerät habe und daher nicht weiß, wie die Benutzeroberfläche, die Animation und das andere Design aussehen. Natürlich gibt es Design-Anleitungen für iOS, aber die Anleitungen sind Anleitungen, und ich war froh, wenn eine Person, die an der Entwicklung der KivyMD-Bibliothek interessiert ist, Dutzende von Screenshots und Animationen des Referenzdesigns von Anwendungen unter der iOS-Plattform senden würde. Genug von dem, was derzeit bereits in KivyMD implementiert ist, aber nur für einen Apfel. Für sim lass mich verabschieden, klopfe an die PM, ich hoffe, wie immer war nicht nutzlos.