MDC-111 Android: włączanie komponentów Material Design w bazie kodu (Kotlin)

1. Wprowadzenie

logo_components_color_2x_web_96dp.png

Komponenty Material (MDC) pomagają deweloperom wdrażać Material Design. MDC zostało stworzone przez zespół inżynierów i projektantów UX w Google. Zawiera dziesiątki atrakcyjnych i funkcjonalnych komponentów interfejsu, które są dostępne na platformach Android, iOS, internetowej i Flutter.material.io/develop

Material Components for Android (MDC Android) to nie jest nowy system ani framework, który wymaga zmiany paradygmatu w aplikacji. MDC Android jest oparty na tych samych klasach i interfejsach API, które znasz już w Androidzie, np. przyciskach i polach tekstowych AppCompat. Komponenty udostępniane przez MDC Android można stosować w miarę potrzeb i natychmiast ulepszać projekt istniejącej aplikacji.

Co utworzysz

W tym laboratorium kodowania zastąpisz niektóre istniejące komponenty w formularzu nowymi komponentami z MDC.

Komponenty MDC-Android w tym ćwiczeniu

  • Pola tekstowe
  • Przyciski
  • Menu

Czego potrzebujesz

  • Podstawowa wiedza na temat programowania aplikacji na Androida
  • Android Studio (jeśli nie masz jeszcze tego środowiska, pobierz je tutaj).
  • emulator lub urządzenie z Androidem (dostępne w Androidzie Studio);
  • Przykładowy kod (patrz następny krok)

Jak oceniasz swoje doświadczenie w tworzeniu aplikacji na Androida?

Początkujący Średnio zaawansowany Zaawansowany

2. Konfigurowanie środowiska programistycznego

Pobierz aplikację Codelabs

Aplikacja startowa znajduje się w katalogu material-components-android-codelabs-111-starter/kotlin. Zanim zaczniesz, cd do tego katalogu.

...lub sklonuj go z GitHub

Aby skopiować ten codelab z GitHuba, uruchom te polecenia:

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

Wczytaj kod startowy w Android Studio

  1. Gdy kreator konfiguracji zakończy działanie i wyświetli się okno Witamy w Android Studio, kliknij Otwórz istniejący projekt Android Studio. Przejdź do katalogu, w którym został zainstalowany przykładowy kod, i wybierz kotlin –> shipping (lub wyszukaj na komputerze shipping), aby otworzyć projekt Shipping.
  2. Poczekaj chwilę, aż Android Studio utworzy i zsynchronizuje projekt. Wskaźniki aktywności u dołu okna Android Studio będą pokazywać postęp.
  3. W tym momencie Android Studio może zgłosić błędy kompilacji, ponieważ brakuje Ci pakietu SDK Androida lub narzędzi do kompilacji, np. takich jak te pokazane poniżej. Postępuj zgodnie z instrukcjami w Android Studio, aby zainstalować lub zaktualizować te komponenty i zsynchronizować projekt.

2wEZ1kuSFwiRvi_vYXnYfwoQ5J79OVBi1SL6044ETje5cDT2rUHGy8ExjGxlBWlWuNUMf5tkLRUrr2_bz_0Im_JDvLyC-X-tNmBJvKUgsn8T4d11A1cq0ItqQl2n6DJrYKY-dEyRdw

Uruchom aplikację startową

  1. Sprawdź, czy konfiguracja kompilacji po lewej stronie przycisku Uruchom / Odtwórz to app.
  2. Naciśnij zielony przycisk Uruchom / Odtwórz, aby skompilować i uruchomić aplikację.
  3. Jeśli w oknie Select Deployment Target (Wybierz miejsce docelowe wdrożenia) na liście dostępnych urządzeń widzisz już urządzenie z Androidem, przejdź do kroku 8. W przeciwnym razie kliknij Utwórz nowe urządzenie wirtualne.
  4. Na ekranie Wybierz sprzęt wybierz telefon, np. Pixel 2, a potem kliknij Dalej.
  5. Na ekranie Obraz systemu wybierz ostatnią wersję Androida, najlepiej z najwyższym poziomem interfejsu API. Jeśli nie jest zainstalowana, kliknij wyświetlony link Pobierz i pobierz aplikację.
  6. Kliknij Dalej.
  7. Na ekranie Android Virtual Device (AVD) (Wirtualne urządzenie z Androidem) pozostaw ustawienia bez zmian i kliknij Finish (Zakończ).
  8. W oknie docelowym wdrożenia wybierz urządzenie z Androidem.
  9. Kliknij OK.
  10. Android Studio skompiluje aplikację, wdroży ją i automatycznie otworzy na urządzeniu docelowym.

Gotowe! Powinna być widoczna aplikacja i jej formularz.

dba8e6132a12da58.png

3. Zaktualizuj pola tekstowe.

Pola tekstowe Material Design są znacznie bardziej użyteczne niż zwykłe pola tekstowe. Określając strefę kliknięcia za pomocą konturu lub wypełnienia tła, zwiększasz prawdopodobieństwo, że użytkownicy wejdą w interakcję z formularzem lub zidentyfikują pola tekstowe w bardziej skomplikowanych treściach.

Importowanie MDC-Androida

Otwórz plik build.gradle modułu app i upewnij się, że blok dependencies zawiera zależność od MDC Android:

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

Zastępowanie stylów pól tekstowych

shipping_info_activity.xml dodaj ten styl do wszystkich komponentów XML TextInputLayout:

shipping_info_activity.xml

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

Każdy element TextInputLayout powinien wyglądać tak:

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.TextInputEditText
       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>

Kompilowanie i uruchamianie:

824c2b33592b2c7e.png

Wszystkie pola tekstowe zostały zaktualizowane, aby korzystać z nowszych projektów w MDC.

Dodawanie błędu

Pola tekstowe MDC mają wbudowaną prezentację błędów. MDC dodaje czerwony tekst pod polem tekstowym i aktualizuje dekoracje, aby również były czerwone.

ShippingInfoActivity.kt zaktualizuj onCreate(), aby sprawdzić wprowadzony tekst i w razie potrzeby ustawić błędy. Powinno to wyglądać mniej więcej tak:

ShippingInfoActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
   super.onCreate(savedInstanceState)
   setContentView(R.layout.shipping_info_activity)

   val rootView = findViewById<View>(android.R.id.content)

   val textInputLayouts = Utils.findViewsWithType(
           rootView, TextInputLayout::class.java)

   save_button.setOnClickListener {
       var noErrors = true
       for (textInputLayout in textInputLayouts) {
           val editTextString = textInputLayout.editText!!.text.toString()
           if (editTextString.isEmpty()) {
               textInputLayout.error = resources.getString(R.string.error_string)
               noErrors = false
           } else {
               textInputLayout.error = null
           }
       }

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

Skompiluj i uruchom. Kliknij ZAPISZ, ale pozostaw co najmniej 1 pole tekstowe puste:

ef2a846d08f2780d.png

Puste pola tekstowe są czerwone i mają pod sobą tekst błędu.

4. Aktualizowanie przycisku

MDC ma przyciski z:

  • Kręgi atramentu
  • Zaokrąglone narożniki
  • Obsługa motywów
  • Układ i typografia dopracowane w każdym pikselu
  • Oparte na klasie AppCompatButton (standardowej klasie przycisków Androida), więc wiesz, jak ich używać w kodzie.

Opcjonalnie zastąp klasę przycisku

Domyślnie biblioteka Material automatycznie rozszerza zwykłe przyciski do przycisków MDC. Możesz jednak opcjonalnie zastąpić wszystkie odwołania do klasy Button klasą MaterialButton, aby uzyskać dostęp do dodatkowych metod dostępnych tylko w klasie MaterialButton, takich jak zmiana promienia zaokrąglenia. Przyciski MDC to proste komponenty typu „plug and play”. Wystarczy zastąpić nazwę komponentu XML Button nazwą MaterialButton i zastosować domyślny styl MaterialButton do elementu MaterialButton.

W sekcji shipping_info_activity.xml zmień przycisk z:

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" />

Do:

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" />

Kompilowanie i uruchamianie:

824c2b33592b2c7e.png

5. Dodaj kartę

MaterialCardView to komponent oparty na CardView, który zawiera:

  • Poprawianie wysokości i stylu
  • Atrybuty grubości i koloru kreski

Umieszczanie treści w karcie

Owiń element LinearLayout zawierający treść elementem shipping_info_activity.xml z komponentem MaterialCardView w ten sposób:

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>

Skompiluj i uruchom. Cały formularz powinien być umieszczony na karcie:

75c86ab9fa395e3c.png

Komponent Material Card View to znany, ale odświeżony sposób na łatwe umieszczenie treści na karcie.

6. Podsumowanie

Zastąpiono niektóre typowe komponenty, aby od razu pokazać ich wartość: pola tekstowe, przyciski i karty. Nie trzeba było przy tym całkowicie przeprojektowywać aplikacji. Inne komponenty też mogą mieć duże znaczenie, np. górny pasek aplikacji i układ kart.

Dalsze kroki

Więcej komponentów MDC-Android znajdziesz w katalogu widżetów na Androida.

Udało mi się ukończyć to ćwiczenie w rozsądnym czasie i przy rozsądnym nakładzie pracy.

Zdecydowanie się zgadzam Zgadzam się Nie mam zdania Nie zgadzam się Zdecydowanie się nie zgadzam

Chcę nadal korzystać z komponentów Material

Zdecydowanie się zgadzam Zgadzam się Nie mam zdania Nie zgadzam się Zdecydowanie się nie zgadzam