MDC-111 Android: Material Components in die Codebasis einbinden (Java)

1. Einführung

logo_components_color_2x_web_96dp.png

Mit Material Components (MDC) können Entwickler Material Design implementieren. MDC wurde von einem Team aus Ingenieuren und UX-Designern bei Google entwickelt und bietet Dutzende von ansprechenden und funktionalen UI-Komponenten. Es ist für Android, iOS, das Web und Flutter verfügbar.material.io/develop

Material Components for Android (MDC Android) ist kein neues System oder Framework, das einen Paradigmenwechsel in Ihrer App erfordert. MDC Android basiert auf denselben Klassen und APIs, die Sie bereits in Android kennen, z. B. AppCompat-Schaltflächen und ‑Textfelder. Die von MDC Android bereitgestellten Komponenten können nach Bedarf verwendet werden und verbessern das Design Ihrer vorhandenen App sofort.

Was Sie erstellen

In diesem Codelab ersetzen Sie einige vorhandene Komponenten in einem Formular durch neue von MDC.

MDC-Android-Komponenten in diesem Codelab

  • Textfelder
  • Schaltflächen
  • Menüs

Voraussetzungen

  • Grundkenntnisse der Android-Entwicklung
  • Android Studio (hier herunterladen, falls noch nicht vorhanden)
  • Ein Android-Emulator oder ‑Gerät (über Android Studio verfügbar)
  • Der Beispielcode (siehe nächsten Schritt)

Wie würden Sie Ihre Erfahrung beim Erstellen von Android-Apps bewerten?

Anfänger Fortgeschritten Experte

2. Entwicklungsumgebung einrichten

Starter-App für das Codelab herunterladen

Die Starter-App befindet sich im Verzeichnis material-components-android-codelabs-111-starter/java. Wechseln Sie vor Beginn zu diesem Verzeichnis.cd

...oder von GitHub klonen

Führen Sie die folgenden Befehle aus, um dieses Codelab von GitHub zu klonen:

git clone https://github.com/material-components/material-components-android-codelabs
cd material-components-android-codelabs/
git checkout 111-starter

Starter-Code in Android Studio laden

  1. Sobald der Einrichtungsassistent abgeschlossen ist und das Fenster Welcome to Android Studio (Willkommen bei Android Studio) angezeigt wird, klicken Sie auf Open an existing Android Studio project (Vorhandenes Android Studio-Projekt öffnen). Navigieren Sie zu dem Verzeichnis, in dem Sie den Beispielcode installiert haben, und wählen Sie java -> shipping aus. Sie können auch auf Ihrem Computer nach shipping suchen, um das Projekt „Shipping“ zu öffnen.
  2. Warten Sie einen Moment, bis Android Studio das Projekt erstellt und synchronisiert hat. Dies wird durch Aktivitätsindikatoren am unteren Rand des Android Studio-Fensters angezeigt.
  3. An dieser Stelle werden in Android Studio möglicherweise einige Build-Fehler angezeigt, weil das Android SDK oder Build-Tools fehlen, z. B. der unten gezeigte Fehler. Folgen Sie der Anleitung in Android Studio, um diese zu installieren oder zu aktualisieren, und synchronisieren Sie Ihr Projekt.

gKYVUDrUs8bH1NfVV5DnikrjM7zJkP3j2rTbd0B66JVyySb54sS89vrTALAD6_AFp7p4CNA4OqOIAkyVjcR23CoUQwNtdsbEQ_sn5EooSqBQo9YBq9H_IsKctCTZBM8pci9WXlmlEw

MDC-Android importieren

Navigieren Sie zur Datei build.gradle des Moduls app und prüfen Sie, ob der Block dependencies eine Abhängigkeit von MDC Android enthält:

api 'com.google.android.material:material:1.1.0-alpha06'

Starter-App ausführen

  1. Achten Sie darauf, dass die Build-Konfiguration links neben der Schaltfläche Ausführen / Wiedergabe auf app festgelegt ist.
  2. Klicken Sie auf die grüne Schaltfläche Ausführen / Wiedergabe , um die App zu erstellen und auszuführen.
  3. Wenn im Fenster Select Deployment Target (Bereitstellungsziel auswählen) bereits ein Android-Gerät in den verfügbaren Geräten aufgeführt ist, fahren Sie mit Schritt 8 fort. Klicken Sie andernfalls auf Create New Virtual Device (Neues virtuelles Gerät erstellen).
  4. Wählen Sie auf dem Bildschirm Select Hardware (Hardware auswählen) ein Smartphone aus, z. B. Pixel 2 , und klicken Sie dann auf Next (Weiter).
  5. Wählen Sie auf dem Bildschirm System Image (Systemabbild) eine aktuelle Android-Version aus, vorzugsweise die höchste API-Ebene. Wenn sie nicht installiert ist, klicken Sie auf den Link Download (Herunterladen) und schließen Sie den Download ab.
  6. Klicken Sie auf Next (Weiter).
  7. Lassen Sie die Einstellungen auf dem Android Virtual Device (AVD) Bildschirm unverändert und klicken Sie auf Finish.
  8. Wählen Sie im Dialogfeld für das Bereitstellungsziel ein Android-Gerät aus.
  9. Klicken Sie auf OK.
  10. Android Studio erstellt die App, stellt sie bereit und öffnet sie automatisch auf dem Zielgerät.

Fertig! Die App und das Formular sollten angezeigt werden.

dba8e6132a12da58.png

3. Textfelder aktualisieren

Textfelder in Material Design bieten einen großen Vorteil in Bezug auf die Nutzerfreundlichkeit gegenüber einfachen Textfeldern. Durch das Definieren der Trefferzone mit einer Umrandung oder einer Hintergrundfüllung interagieren Nutzer eher mit Ihrem Formular oder erkennen Textfelder in komplizierteren Inhalten.

Textfeldstile ersetzen

Fügen Sie in shipping_info_activity.xml allen TextInputLayout-XML-Komponenten den folgenden Stil hinzu:

shipping_info_activity.xml

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

Jedes TextInputLayout sollte so aussehen:

shipping_info_activity.xml

<com.google.android.material.textfield.TextInputLayout
   android:id="@+id/name_text_input"
   style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:errorEnabled="true">

   <com.google.android.material.textfield.TextInputLayout
       android:id="@+id/name_edit_text"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:hint="@string/label_name" />
</com.google.android.material.textfield.TextInputLayout>

Erstellen und ausführen:

824c2b33592b2c7e.png

Die Textfelder wurden alle aktualisiert, um die neueren Designs in MDC zu verwenden.

Fehler hinzufügen

MDC-Textfelder haben eine integrierte Fehlerdarstellung. MDC fügt roten Text unter dem Textfeld hinzu und aktualisiert auch die Dekorationen in Rot.

Aktualisieren Sie in ShippingInfoActivity.java die Methode onCreate() so, dass sie wie folgt aussieht:

ShippingInfoActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.shipping_info_activity);

   View rootView = findViewById(android.R.id.content);

   final List<TextInputLayout> textInputLayouts = Utils.findViewsWithType(
           rootView, TextInputLayout.class);

   Button button = findViewById(R.id.save_button);
   button.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           boolean noErrors = true;
           for (TextInputLayout textInputLayout : textInputLayouts) {
               String editTextString = textInputLayout.getEditText().getText().toString();
               if (editTextString.isEmpty()) {
                   textInputLayout.setError(getResources().getString(R.string.error_string));
                   noErrors = false;
               } else {
                   textInputLayout.setError(null);
               }
           }

           if (noErrors) {
               // All fields are valid!
           }
       }
   });
}

Erstellen und ausführen. Klicken Sie auf „Speichern“, lassen Sie aber mindestens ein Textfeld leer:

ef2a846d08f2780d.png

Die leeren Textfelder sind rot und enthalten darunter einen Fehlertext.

4. Schaltfläche aktualisieren

MDC bietet Schaltflächen mit folgenden Funktionen:

  • Tintenwellen
  • Abgerundete Ecken
  • Designunterstützung
  • Pixelgenaues Layout und Typografie
  • Basierend auf AppCompatButton (der Standard-Android-Schaltflächenklasse), sodass Sie wissen, wie Sie sie in Ihrem Code verwenden.

Optional: Schaltflächenklasse ersetzen

Standardmäßig werden reguläre Schaltflächen von der Material-Bibliothek automatisch in MDC-Schaltflächen umgewandelt. Sie können jedoch optional alle Verweise auf „Button“ durch „MaterialButton“ ersetzen, damit Sie auf zusätzliche Methoden zugreifen können, die nur in einer „MaterialButton“ verfügbar sind, z. B. zum Ändern des Eckradius. MDC-Schaltflächen sind eine einfache Plug-and-Play-Komponente. Ersetzen Sie einfach den XML-Komponentennamen Button durch MaterialButton und wenden Sie den Standardstil MaterialButton auf MaterialButton an.

Ändern Sie in shipping_info_activity.xml die Schaltfläche von:

shipping_info_activity.xml

<Button
   android:id="@+id/save_button"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="end"
   android:layout_marginTop="16dp"
   android:text="@string/label_save" />

in:

shipping_info_activity.xml

<com.google.android.material.button.MaterialButton
   android:id="@+id/save_button"
   style="@style/Widget.MaterialComponents.Button"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="end"
   android:layout_marginTop="16dp"
   android:text="@string/label_save" />

Erstellen und ausführen:

824c2b33592b2c7e.png

5. Karte hinzufügen

MaterialCardView ist eine Komponente, die auf CardView basiert und folgende Funktionen bietet:

  • Korrekte Erhebung und Formatierung
  • Attribute für Strichbreite und ‑farbe

Inhalte in eine Karte einfügen

Fügen Sie LinearLayout mit Ihren Inhalten in shipping_info_activity.xml in eine MaterialCardView-Komponente ein:

shipping_info_activity.xml

<com.google.android.material.card.MaterialCardView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_margin="16dp"
   app:contentPadding="16dp">


   <!-- LinearLayout goes here -->


</com.google.android.material.card.MaterialCardView>

Erstellen und ausführen. Das gesamte Formular sollte in eine Karte eingefügt werden:

75c86ab9fa395e3c.png

Die Komponente „Material Card View“ ist eine vertraute, aber frische Möglichkeit, Inhalte einfach in eine Karte einzufügen.

6. Zusammenfassung

Sie haben einige gängige Komponenten ersetzt, um sofort einen Mehrwert zu erzielen: Textfelder, Schaltflächen und Karten. Dabei mussten Sie das Design Ihrer App nicht komplett überarbeiten. Auch andere Komponenten können einen großen Unterschied machen, z. B. die obere App-Leiste und TabLayout.

Weiteres Vorgehen

Im Android-Widgets-Katalog finden Sie noch mehr Komponenten in MDC-Android.

Ich konnte dieses Codelab mit einem angemessenen Zeit- und Arbeitsaufwand abschließen.

Stimme voll und ganz zu Stimme zu Neutral Stimme nicht zu Stimme überhaupt nicht zu

Ich möchte Material Components auch in Zukunft verwenden.

Stimme voll und ganz zu Stimme zu Neutral Stimme nicht zu Stimme überhaupt nicht zu