ConstraintLayout vs "traditionelle" Layouts

10

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)?

    
Rene Ferrari 10.06.2017, 21:39
quelle

3 Antworten

9
  

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.

    
Yupi 10.06.2017, 23:05
quelle
4
  

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: Ссылка

    
Bundeeteddee 08.11.2017 12:39
quelle
2

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

spricht     
Alex Kamenkov 10.06.2017 21:54
quelle

Tags und Links