2017-06-10 6 views
8

Ich frage mich nur, wenn die CoordinatorLayout über "traditionelle" Layouts wählen oder sind sie (oder zumindest einige von ihnen) veraltet sein? Die Frage ConstraintLayout vs CoordinatorLayout hat mir bereits gezeigt, dass das CoordinatorLayout noch sein Existenzrecht hat. Ich könnte mir vorstellen, dass das FrameLayout immer noch eine bessere Wahl ist als das ConstraintLayout, wenn es nur ein untergeordnetes View gibt.ConstraintLayout vs "traditionelle" Layouts

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 Übergang zum ConstraintLayout sehr schwierig für mich. Außerdem würden mich die Antworten auf diese Fragen sehr interessieren:

Hat das ConstraintLayout eine bessere Leistung als ein verschachteltes Layout? Wenn dies der Fall ist, an welchem ​​Punkt tritt dies auf (welche Verschachtelungsebene)?

Antwort

8

ich gerade fragen, wenn die CoordinatorLayout über „Traditional“ Layouts zu wählen oder sind sie (oder zumindest einige von ihnen) gehen bis veraltet sein?

So ConstraintLayout ist nützlich, aber (jetzt) es ist nicht für die Android-App-Entwicklung erforderlich, jede mehr als LinearLayout und RelativeLayout sind. Und weil ConstraintLayout eine Bibliothek ist, müssen Sie einige zusätzliche Schritte ausführen, um es zu Ihrem Projekt hinzuzufügen (com.android.support.constraint:constraint-layout Artefakt in Ihrem Abhängigkeiten Schließung der build.gradle-Datei Ihres Moduls), und es fügt ~ 100KB zu der Größe von deine Android App.

Ich persönlich bin so daran gewöhnt, Layout von Hand in xml so Übergang zum ConstraintLayout ist sehr schwer für mich zu schreiben.

Drag & Drop GUI-Builder

Google versucht, das Leben leichter zu Entwicklern zu machen und machen sie arbeiten schneller und produktiver, so dass sie per Drag & Drop GUI-Builder weiter zu verbessern. Aber Drag-and-Drop-Gesten, der Entwickler ist nur liefert Ihnen X/Y-Koordinaten eines Widgets, basierend auf, wo der Entwickler die Maustaste loslässt und den Tropfen vervollständigt. Mit LinearLayout Hinzufügen von Widgets ist einfach. Mit RelativeLayout ist schwierig für GUI Bulder Drag-Drop zu behandeln und wahrscheinlich müssen Sie in den XML-Code zu graben, um Dinge erledigt zu bekommen. ConstraintLayout wurde mit GUI-Gebäude im Hinterkopf erstellt, um es leichter zu die richtigen Regeln basierend darauf, wo der Entwickler zufällig ein Widget fallen zu lassen.

recomputing Größe und Position

Ändern der Details eines Widgets verursachen oft die Größen neu berechnet werden zu lassen. Zum Beispiel nne Änderung in TextView könnte bewirken, dass die gesamte Hierarchie zu re-size/re-Position arbeiten gehen. 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 für tiefe Hierarchien sehr teuer sein. So

Hat der ConstraintLayout eines bessere Leistung hat dann ein verschachteltes -Layout?

Ja, ConstraintLayout mit Leistung konzipiert ist, versucht so viele Pass-Szenarien wie möglich zu beseitigen und indem man versucht, die Notwendigkeit tief verschachtelte Ansicht Hierarchien zu beseitigen.

Huh,

für mehr Sie einen Blick in ein Buch über Android-Entwicklung von CommonsWare nehmen. Dort mit ConstraintLayout wird in mehr Details mit Vergleich Beispielen mit anderen Behältern wie , RelativeLayout usw. erklärt Wirklich Anatomie der Android-Entwicklung.

+0

Danke, das hat mir wirklich sehr geholfen! Auf lange Sicht muss ich mich also an das ConstraintLayout anpassen.Ich werde es vermissen, Layouts manuell zu schreiben. –

+0

Ihre Begrüßung. Ich bin froh, dass meine Antwort für dich nützlich war. – Yupi

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.

können Sie diese answer überprüfen, die über die Unterschiede zwischen ConstraintLayout und RelativeLayout sprechen

3

Ich könnte mir vorstellen, dass die FrameLayout noch eine bessere Wahl als die ConstraintLayout ist, wenn nur ein Kind View ist.

Ich denke, dass die Kraft von ConstraintLayout wirklich stattfindet, 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. Mithilfe der vollständigen Hilfefunktion ConstraintLayout, wie z. B. unsichtbare Abhängigkeitsansichten wie Guideline und Barrier, können Sie vertikale/horizontale layout_constraintVertical_bias angeben und Verteilungen unter Verwendung von layout_constraintVertical_chainStyle anzeigen.

Wenn Sie eine komplexe Ansicht mit verschachtelten ViewGroup s haben, beginnen Sie mit ConstraintLayout.

Ich persönlich bin so daran gewöhnt, Layout von Hand in xml so Übergang zum ConstraintLayout ist sehr schwer für mich zu schreiben.

Dies 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, die XML von Hand zu schreiben, aber wenn du erst einmal angefangen hast, bin ich viel selbstsicherer und der Editor fügt Dinge hinzu, die dir vielleicht nicht bewusst sind.

Ein weiterer Grund ConstraintLayout zu verwenden: Eine gute Möglichkeit, Animationen mithilfe von ConstraintSet ohne zu viel Hand-Codierung zu implementieren. Ein schönes Beispiel: https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3

Verwandte Themen