Ich frage mich nur, wann ich das CoordinatorLayout über "traditionelle" Layouts wählen soll oder werden sie (oder zumindest einige davon) veraltet sein?
Die Frage ConstraintLayout vs CoordinatorLayout hat mir bereits gezeigt, dass das CoordinatorLayout immer noch sein Existenzrecht hat . Ich könnte mir vorstellen, dass das FrameLayout immer noch eine bessere Wahl ist als das ConstraintLayout, wenn es nur eine untergeordnete Ansicht gibt.
Aber was ist mit den anderen Layouts?
Ich persönlich bin so sehr daran gewöhnt, Layouts per Hand in xml zu schreiben, daher ist der Wechsel zum ConstraintLayout sehr schwierig für mich. Außerdem würden mich Antworten auf diese Fragen wirklich interessieren:
Hat das ConstraintLayout eine bessere Leistung als ein verschachteltes Layout? Wenn dies der Fall ist, an welchem Punkt tritt dies auf (welche Verschachtelungsebene)?
Ich frage mich nur, wann ich das CoordinatorLayout wählen soll "Traditionelle" Layouts oder gehen sie (oder zumindest einige von ihnen) veraltet sein?
So ConstraintLayout
ist nützlich, aber ( für jetzt ) ist für die Entwicklung von Android-Apps nicht erforderlich
mehr als LinearLayout
und RelativeLayout
sind. Und weil ConstraintLayout
ein ist
Bibliothek, müssen Sie einige zusätzliche Schritte ausführen, um es zu Ihrem Projekt hinzuzufügen ( com.android.support.constraint:constraint-layout
artefact in Ihrem
Abhängigkeiten Schließung der Modul build.gradle-Datei), und es
Fügt der Größe Ihrer Android-App ~ 100 KB hinzu.
Ich bin persönlich so daran gewöhnt, Layouts per Hand in xml zu schreiben Der Übergang zum ConstraintLayout fällt mir sehr schwer.
Drag & Drop-GUI-Builder
Google versucht Entwicklern das Leben zu erleichtern und sie schneller und produktiver arbeiten zu lassen, damit sie den Drag-Drop-GUI-Builder weiter verbessern. Aber Drag-and-Drop-Gesten, ist der Entwickler nur
Bereitstellung von X / Y-Koordinaten eines Widgets basierend auf dem Standort des Entwicklers
gibt die Maustaste frei und beendet den Drop.
Mit LinearLayout
hinzufügen Widgets ist einfach. Mit RelativeLayout
ist es schwierig für GUI Bulder, Drag-Drop zu handhaben und wahrscheinlich müssen Sie innerhalb des XML-Codes graben, um Dinge erledigt zu bekommen.
ConstraintLayout
wurde mit einem GUI-Aufbau erstellt, um es ein wenig einfacher zu machen
folge den richtigen Regeln basierend darauf, wo der Entwickler ein Widget fallen lässt.
Größe und Position erneut angeben
Häufig ändern sich die Details eines Widgets
die Größen müssen neu berechnet werden. Zum Beispiel nne Änderung in TextView
könnte
Ursache dafür ist, dass die gesamte Hierarchie die Arbeit der Größenänderung / Neupositionierung durchläuft. Wenn Sie einen Container innerhalb eines Containers haben, der sich in einem anderen Container usw. befindet, bedeutet dies, dass die Eltern ihre Kinder neu sortieren / neu positionieren, und das kann sehr sein
teuer für tiefe Hierarchien.
Also
Hat das ConstraintLayout eine bessere Leistung als ein verschachtelter Layout?
Ja, ConstraintLayout
wurde im Hinblick auf Leistung entwickelt und versucht zu eliminieren
so viele Pass-Szenarien wie möglich und durch den Versuch, die Notwendigkeit zu beseitigen
tief verschachtelte Ansichtshierarchien.
Huh,
Weitere Informationen finden Sie in einem Buch über Android-Entwicklung von CommonsWare .
Dort wird ConstraintLayout
genauer erklärt mit Vergleichsbeispielen mit anderen Containern wie LinearLayout
, RelativeLayout
usw. Wirklich Anatomie der Android-Entwicklung.
Ich könnte mir vorstellen, dass das FrameLayout immer noch eine bessere Wahl ist als das ConstraintLayout, wenn nur eine untergeordnete Ansicht vorhanden ist.
Ich denke, die Leistung von ConstraintLayout
findet wirklich statt, wenn Sie über einfache Layouts hinausgehen. Ich denke, das Ziel (zumindest für mich) ist es, Ihr komplexes Layout so weit wie möglich zu reduzieren. Verwenden Sie die vollständige Hilfe von ConstraintLayout
, z. B. Ansichten für unsichtbare Abhängigkeiten wie Guideline
und Barrier
, um vertikale / horizontale layout_constraintVertical_bias
anzugeben und Verteilungen mit layout_constraintVertical_chainStyle
anzuzeigen.
Wenn Sie eine komplexe Ansicht haben, die ViewGroup
s verschachtelt hat, verwenden Sie ConstraintLayout
.
Ich bin persönlich so daran gewöhnt, Layouts per Hand in xml zu schreiben Der Übergang zum ConstraintLayout fällt mir sehr schwer.
Das gilt auch für mich. Ich habe Layout-XML-Dateien von Hand geschrieben, und ich mache immer noch mit ConstraintLayout
. Der Editor ist sehr verbessert, und ich benutze es hauptsächlich, um sicherzustellen, dass die Einschränkungen richtig aussehen. Es gab ein bisschen Vorlaufzeit, um sich daran zu gewöhnen, das XML von Hand zu schreiben, aber sobald Sie loslegen, bin ich viel selbstsicherer und der Editor fügt Dinge hinzu, die Ihnen vielleicht nicht bewusst sind.
Ein weiterer Grund, ConstraintLayout
zu verwenden: Eine großartige Möglichkeit, Animationen ohne zu viel Handcodierung zu implementieren, indem Sie ConstraintSet
verwenden. Ein gutes Beispiel: Ссылка
Sie können weiterhin andere Layouts für einfache Dinge verwenden (wenn sie nicht veraltet sind), aber ConstraintLayout ist schneller, intelligenter und hat eine bessere Leistung als RelativeLayout.
Sie können diese Antwort überprüfen, die über Unterschiede zwischen ConstraintLayout und RelativeLayout
sprichtTags und Links android android-layout