Im vergangenen Jahr führte Google Material Design ein und es wurde klar, dass Bewegung und Animation zwei der auffälligsten Funktionen in modernen Android-Anwendungen sein werden. Google bot den Entwicklern jedoch keine einfache Lösung, um sie in Anwendungen zu integrieren. Infolgedessen wurden viele Bibliotheken entwickelt, um das Integrationsproblem zu lösen.
Während der diesjährigen Google I / O hat Google jedoch die Android Design Support Library eingeführt, um die Einführung von Material Design zu erleichtern. Dadurch können sich die Entwickler auf die Funktionen konzentrieren, die ihre Anwendungen einzigartig machen.
In diesem Tutorial zeige ich Ihnen, wie Sie die in der Material Design-Spezifikation von Google gezeigten Bildlauftechniken implementieren. Bevor Sie beginnen, sollten Sie sich mit den verfügbaren scrollbaren Regionen in einer Android-Anwendung vertraut machen. In der folgenden Abbildung sehen Sie, dass es vier Regionen gibt.
Hier werden Benachrichtigungen angezeigt und der Status der verschiedenen Gerätefunktionen wird angezeigt.
Die Symbolleiste wurde früher als Aktionsleiste bezeichnet. Es ist jetzt eine anpassbarere Ansicht mit denselben Funktionalitäten.
In diesem optionalen Bereich werden die Registerkarten angezeigt, die den Inhalt Ihrer Anwendung kategorisieren. Lesen Sie mehr über die Verwendung von Registerkarten und die verschiedenen Möglichkeiten, diese in der Material Design-Spezifikation von Google anzuzeigen. Bei Bedarf können Sie es auch in der seitlichen Navigation von Google verwenden.
Hier können Sie Bilder oder erweiterte Anwendungsleisten anzeigen.
In Bezug auf die Bildlauftechniken reagieren die Symbolleiste und die Registerkarte / Suchleiste, wenn der Inhalt Ihrer Anwendung gescrollt wird.
Um zu folgen, sollten Sie die neueste Version von Android Studio verwenden. Sie können es von der Android Developer-Website erhalten. Um diese Bildlauftechniken auszuprobieren, empfehle ich, ein neues Projekt zu erstellen (mit einem Mindest-API-Level von 15), da sich das Layout Ihrer Anwendung erheblich ändert.
Ich habe ein Starterprojekt zur Verfügung gestellt, das Sie von GitHub herunterladen können. Sie können das Starterprojekt als Ausgangspunkt verwenden und die Bildlauftechniken in Ihren eigenen Anwendungen verwenden. Lassen Sie uns zunächst die folgenden Abhängigkeiten zu Ihrem Projekt hinzufügen build.gradle Datei im App-Ordner:
'com.android.support:design:22.2.0' kompilieren 'com.android.support:recyclerview-v7:22.2.0' kompilieren
Mit der ersten Abhängigkeit erhalten Sie die Android Design Support Library, die die neuen Klassen enthält, die wir für dieses Lernprogramm benötigen.
Mit der zweiten Abhängigkeit erhalten Sie die neueste Version von RecyclerView
. Die im offiziellen Artikel zum Erstellen von Listen aufgelistete Version ist dieses Mal nicht nützlich.
Als Nächstes benötigen Sie einige Dummy-Daten, um diese Techniken auszuprobieren und die Daten zu füllen RecyclerView
. Sie können sie selbst implementieren oder die Implementierung aus dem kopieren Anfangsaktivität
Klasse im Starterprojekt.
Diese Technik verbirgt den Symbolleistenbereich, wenn der Inhalt Ihrer Anwendung gescrollt wird. Sie können die Technik in Aktion im folgenden Video sehen.
Bei diesem Layout-Design können Sie sich Folgendes vorstellen:
Das Problem bei diesem Layout ist, dass Sie die Ereignisse selbst verwalten müssen, aber es wird schmerzlos sein, wenn Sie die neuen Klassen nutzen. Ändern wir es wie folgt:
In diesem neuen Layout können Sie Folgendes sehen:
RelativesLayout
wird durch a ersetzt KoordinatorLayout
Werkzeugleiste
ist in ein gehüllt AppBarLayout
Werkzeugleiste
und RecyclerView
erhielt ein paar zusätzliche AttributeWas sind diese neuen Klassen??
KoordinatorLayout
Dieses Layout ist ein neuer Container und ein Kompressor FrameLayout
Dies bietet eine zusätzliche Kontrolle über Berührungsereignisse zwischen untergeordneten Ansichten.
AppBarLayout
Dieses Layout ist ein weiterer neuer Container, der speziell für die Implementierung vieler Funktionen des App Bar-Konzepts der Material Design-App konzipiert wurde. Denken Sie daran, wenn Sie es in einem anderen verwenden ViewGroup
, Die meisten Funktionen funktionieren nicht.
Der Schlüssel zu dieser Bildlauftechnik und den meisten anderen Bildlaufverfahren, die wir besprechen werden, ist die KoordinatorLayout
Klasse. Diese Sonderklasse kann Ereignisse von ihren untergeordneten Ansichten empfangen und an diese liefern, damit sie entsprechend reagieren können. Es ist als Stammcontaineransicht konzipiert.
Um diese Technik zu aktivieren, muss die App: Layoutverhalten
Attribut gibt an, in welcher Ansicht die Ereignisse im ausgelöst werden Werkzeugleiste
. In diesem Fall ist das die RecyclerView
.
app: layout_behavior = "@ string / appbar_scrolling_view_behavior"
Das app: layout_scrollFlags
Attribut des Werkzeugleiste
zeigt der Ansicht an, wie sie reagieren soll.
app: layout_scrollFlags = "scroll | enterAlways"
Das app: layout_scrollFlags
Attribut kann vier mögliche Werte haben, die kombiniert werden können, um den gewünschten Effekt zu erzielen:
scrollen
Dieses Flag sollte für alle Ansichten gesetzt werden, für die ein Scrollen außerhalb des Bildschirms erforderlich ist. Ansichten, die dieses Flag nicht verwenden, bleiben am oberen Bildschirmrand fixiert.
enterAlways
Dieses Flag stellt sicher, dass bei einem Bildlauf nach unten diese Ansicht sichtbar wird schnelle Rückkehr Muster.
enterAlwaysCollapsed
Wenn eine Sicht a erklärt hat minHöhe
Wenn Sie dieses Flag verwenden, wird die Ansicht nur in der minimalen Höhe eingegeben (minimiert) und erst dann auf die volle Höhe erweitert, wenn die Bildlaufansicht ihren höchsten Punkt erreicht hat.
exitUntilCollapsed
Dieses Flag bewirkt, dass die Ansicht außerhalb des Bildschirms angezeigt wird, bis sie minimiert ist minHöhe
wird erreicht).
Sie können das Projekt jetzt ausführen oder drücken Strg + R, und sehen Sie diese Technik in Aktion.
Bei dieser Technik wird die Symbolleiste außerhalb des Bildschirms gescrollt, während der Bereich der Registerkartenleiste oben verankert bleibt. Sie können diese Technik in Aktion im folgenden Video sehen.
Für diese Technik werde ich das Layout der vorherigen Technik wiederverwenden und eine hinzufügen TabLayout
neben dem anzeigen Werkzeugleiste
, in der AppBarLayout
.
Das TabLayout
Ansicht bietet ein horizontales Layout für die Anzeige von Registerkarten. Sie können mit dem Tab eine beliebige Anzahl von Registerkarten hinzufügen neue Registerkarte
Methode und stellen Sie ihren Verhaltensmodus mit der setTabMode
. Beginnen wir mit dem Auffüllen der Registerkarten.
tab_layout = (TabLayout) findViewById (R.id.tabs); tab_layout.setTabMode (TabLayout.MODE_FIXED); tab_layout.addTab (tab_layout.newTab (). setText ("Tab 1")); tab_layout.addTab (tab_layout.newTab (). setText ("Tab 2")); tab_layout.addTab (tab_layout.newTab (). setText ("Tab 3"));
Durch Ändern des Wertes von app: layout_scrollFlags
Attribut und Hinzufügen und Entfernen aus dem Werkzeugleiste
und TabLayout
, Sie können Animationen wie die in:
Schauen Sie sich die folgenden Videos an, um Beispiele für diese Bildlauftechnik zu erhalten.
Sie können Ihr Projekt ausführen und diese Bildlauftechnik in Aktion sehen.
Ich verwende für diese Scroll-Technik die flexible Raumregion, die ich zu Beginn dieses Tutorials erwähnt habe. Ich mache das, um die anfängliche Höhe des zu verkleinern AppBarLayout
wie der Inhalt nach oben scrollen. Die Höhe der AppBarLayout
wird auf die ursprüngliche Höhe erhöht, wenn der Inhalt nach unten gescrollt wird. Sie können diese Technik in Aktion im folgenden Video sehen.
Für diese Scrolltechnik verwende ich folgendes Layout:
Es sieht auf jeden Fall aus wie viel Code, also lassen Sie uns den Code aufteilen. In diesem Layout habe ich folgende Änderungen vorgenommen:
Werkzeugleiste
ist in ein gehüllt CollapsingToolBarLayout
und beide Elemente werden in das Verzeichnis eingefügt AppBarLayout
.app: layout_scrollFlags
Attribut wird aus dem verschoben Werkzeugleiste
zum CollapsingToolBarLayout
, weil dieser Container jetzt für das Reagieren auf Bildlaufereignisse zuständig ist.app: layout_collapseMode
, wurde dem hinzugefügt Werkzeugleiste
. Dieses Attribut stellt sicher, dass die Werkzeugleiste
bleibt am oberen Rand des Bildschirms fixiert.AppBarLayout
hat eine feste Anfangshöhe von 192 dp.FloatingActionButton
wurde dem Layout hinzugefügt, unter dem RecyclerView
.Wozu dienen diese neuen Klassen??
CollapsingToolBarLayout
Dies ist eine neue Ansicht, die speziell für das Einwickeln der Werkzeugleiste
und implementieren Sie eine einklappbare App-Leiste. Bei Verwendung der CollapsingToolBarLayout
Klasse müssen Sie die folgenden Attribute besonders beachten:
App: contentScrim
Dieses Attribut gibt die Farbe an, die angezeigt werden soll, wenn sie vollständig reduziert ist.
app: extendedTitleMarginStart / app: extendedTitleMarginEnd
Diese Attribute geben die Ränder des erweiterten Titels an. Sie sind nützlich, wenn Sie die Verwendung von planen setDisplayHomeAsUpEnabled
Methode in Ihrer Aktivität und füllen Sie die neuen Felder um den Titel.
FloatingActionButton
Die schwebende Aktionsschaltfläche ist eine wichtige Komponente von Material Design-Apps. Sie können jetzt schwebende Aktionsschaltflächen mit nur wenigen Codezeilen in Ihr Layout einfügen. Du kannst den ... benutzen App: fabSize
Attribut zur Auswahl aus zwei verschiedenen Größen, Standard (56 dp) und Mini (40 dp). Standard ist die Standardgröße.
Der Verschwindungseffekt wird automatisch durch Verankerung der schwebenden Aktionstaste an der erreicht AppBarLayout
Verwendung der app: layout_anchor
Attribut. Sie können die Position relativ zu diesem Anker auch mit angeben app: layout_anchorGravity
Attribut.
Bevor Sie das Projekt ausführen, müssen Sie in der Aktivität angeben, dass CollapsingToolBarLayout
wird den Titel statt des anzeigen Werkzeugleiste
. Sehen Sie sich den folgenden Code-Ausschnitt zur Verdeutlichung an.
collapsing_container = (CollapsingToolbarLayout) findViewById (R.id.collapsing_container); collapsing_container.setTitle (getResources (). getString (R.string.title_activity_technique3));
Führen Sie das Projekt aus, um die dritte Bildlauftechnik in Aktion zu sehen.
Diese Bildlauftechnik verwendet das erweiterte AppBarLayout
, In der vorherigen Technik gezeigt, um ein Bild anzuzeigen. Sie können diese Technik im folgenden Video sehen.
Für diese Technik werde ich das vorherige Layout wiederverwenden und etwas modifizieren:
In diesem Layout habe ich folgende Änderungen vorgenommen:
android: hintergrund
Attribut wurde aus dem entfernt AppBarLayout
. Weil der Bildansicht
Wenn Sie diesen Bereich ausfüllen, brauchen Sie keine Hintergrundfarbe.App: extendedTitleMarginStart
und App: extendedTitleMarginEnd
Attribute wurden entfernt, weil wir das nicht verwenden setDisplayHomeAsUpEnabled
Methode in der Aktivität.Bildansicht
wurde hinzugefügt Vor das Werkzeugleiste
. Dies ist wichtig, um das zu vermeiden AppBarLayout
Zeigt einen Teil des Bildes anstelle der Primärfarbe an, wenn diese minimiert ist.Sie haben vielleicht auch bemerkt, dass die Bildansicht
hat die app: layout_collapseMode
Attribut. Der Wert des Attributs ist auf festgelegt Parallaxe
Parallax-Scrolling implementieren. Zusätzlich können Sie auch das hinzufügen app: layout_collapseParallaxMultiplier
Attribut, um einen Multiplikator festzulegen.
Dies sind alle Änderungen, die Sie vornehmen müssen, damit diese Scroll-Technik in Ihrer App reibungslos funktioniert. Führen Sie das Projekt aus, um diese Bildlauftechnik in Aktion zu sehen.
Bei diesem Bildlaufverfahren wird der flexible Bereich vom Inhalt der App überlappt und außerhalb des Bildschirms gescrollt, wenn der Inhalt gescrollt wird. Sie können diese Technik in Aktion im folgenden Video sehen.
Bei dieser Technik können Sie das Layout der vorherigen Technik mit wenigen Änderungen wieder verwenden.
Für dieses Layout:
Bildansicht
und das FloatingActionButton
in der CollapsingToolbarLayout
wurden entfernt. Diese Technik erfordert kein Bild.CollapsingToolbarLayout
, das App: contentScrim
Attribut wurde durch das ersetzt android: hintergrund
Attribut. Wir machen das, weil die Hintergrundfarbe mit der übereinstimmen muss Werkzeugleiste
Hintergrundfarbe schön beim Verschwinden.android: hintergrund
Attribut wurde dem hinzugefügt Werkzeugleiste
.App: Behavior_overlapTop
Attribut wurde dem hinzugefügt RecyclerView
. Dies ist das wichtigste Attribut für dieses Bildlaufverfahren, da dieses Attribut den Überlappungsbereich angibt, den die Ansicht mit dem haben soll AppBarLayout
. Damit dieses Attribut Wirkung hat, sollte es der gleichen Ansicht hinzugefügt werden, die die App: Layoutverhalten
Attribut.Wenn Sie versuchen, diese Bildlauftechnik mit diesen Änderungen zu verwenden, hat das resultierende Layout keinen Titel in der Werkzeugleiste
. Um dies zu lösen, können Sie eine Textvorschau
und füge es dem hinzu Werkzeugleiste
programmatisch.
TextView Text = neue TextView (dies); text.setText (R.string.title_activity_technique5); text.setTextAppearance (this, android.R.style.TextAppearance_Material_Widget_ActionBar_Title_Inverse); toolbar.addView (Text);
Beachten Sie, dass Sie nicht jede dieser Techniken in Ihrer App implementieren müssen. Einige sind für Ihr Design nützlicher als andere. Nun, da Sie wissen, wie jeder implementiert wird, können Sie ihn auswählen und damit experimentieren.
Ich hoffe, Sie fanden dieses Tutorial hilfreich. Vergiss nicht es zu teilen, wenn es dir gefallen hat. Sie können unten Kommentare und Fragen hinterlassen.