Android MDC-111: Menggabungkan Komponen Material ke dalam codebase (Kotlin)

1. Pengantar

logo_components_color_2x_web_96dp.png

Komponen Material (MDC) membantu developer menerapkan Desain Material. Dibuat oleh tim engineer dan desainer UX di Google, MDC memiliki banyak komponen UI yang indah dan fungsional serta tersedia untuk Android, iOS, web, dan Flutter.material.io/develop

Komponen Material untuk Android (MDC Android) bukanlah sistem atau framework baru yang memerlukan perubahan paradigma di aplikasi Anda. Android MDC dibangun di class dan API yang sama dengan yang sudah Anda ketahui di Android, seperti tombol AppCompat dan kolom teks. Komponen yang disediakan oleh MDC Android dapat digunakan sesuai kebutuhan dan akan langsung memperbaiki desain pada aplikasi yang sudah ada.

Yang akan Anda bangun

Dalam codelab ini, Anda akan mengganti beberapa komponen yang ada dalam formulir dengan komponen baru oleh MDC.

Komponen MDC-Android dalam codelab ini

  • Kolom teks
  • Tombol
  • Menu

Yang Anda butuhkan

  • Pengetahuan dasar tentang pengembangan Android
  • Android Studio (download di sini jika Anda belum memilikinya)
  • Emulator atau perangkat Android (tersedia melalui Android Studio)
  • Kode contoh (lihat langkah berikutnya)

Bagaimana Anda menilai tingkat pengalaman Anda dalam membangun aplikasi Android?

Pemula Menengah Mahir

2. Menyiapkan lingkungan pengembangan

Mendownload aplikasi codelab awal

Aplikasi awal terletak di direktori material-components-android-codelabs-111-starter/kotlin. Pastikan untuk memasukkan cd ke dalam direktori tersebut sebelum memulai.

...atau meng-clone codelab dari GitHub

Untuk meng-clone codelab ini dari GitHub, jalankan perintah berikut:

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

Memuat kode awal di Android Studio

  1. Setelah wizard penyiapan selesai dan jendela Welcome to Android Studio ditampilkan, klik Open an existing Android Studio project. Buka direktori tempat Anda menginstal kode contoh, lalu pilih kotlin -> shipping (atau telusuri shipping) di komputer untuk membuka project Pengiriman.
  2. Tunggu Android Studio mem-build dan menyinkronkan project, seperti yang ditunjukkan oleh indikator aktivitas di bagian bawah jendela Android Studio.
  3. Pada tahap ini, Android Studio dapat memunculkan beberapa error build karena alat build atau Android SDK tidak ada, seperti yang ditampilkan di bawah. Ikuti petunjuk di Android Studio untuk menginstal/mengupdate versi ini dan menyinkronkan project Anda.

2wEZ1kuSFwiRvi_vYXnYfwoQ5J79OVBi1SL6044ETje5cDT2rUHGy8ExjGxlBWlWuNUMf5tkLRUrr2_bz_0Im_JDvLyC-X-tNmBJvKUgsn8T4d11A1cq0ItqQl2n6DJrYKY-dEyRdw

Menjalankan aplikasi awal

  1. Pastikan konfigurasi build di sebelah kiri tombol Run / Play adalah app.
  2. Tekan tombol Run/Play berwarna hijau untuk mem-build dan menjalankan aplikasi.
  3. Di jendela Select Deployment Target, jika Anda sudah mencantumkan perangkat Android di perangkat yang tersedia, lanjutkan ke Langkah 8. Jika tidak tercantum, klik Create New Virtual Device.
  4. Di layar Select Hardware, pilih perangkat ponsel, misalnya Pixel 2, lalu klik Next.
  5. Di layar System Image, pilih recent Android version, terutama API level yang paling tinggi. Jika tidak terinstal, klik link Download yang ditampilkan dan selesaikan proses download-nya.
  6. Klik Next.
  7. Di layar Android Virtual Device (AVD), biarkan setelan apa adanya, lalu klik Finish.
  8. Pilih Android device dari dialog target deployment.
  9. Klik Ok.
  10. Android Studio mem-build, men-deploy, dan otomatis membuka aplikasi di perangkat target.

Berhasil! Anda akan melihat aplikasi dan bentuknya.

dba8e6132a12da58.png

3. Memperbarui kolom teks

Kolom teks Desain Material memiliki kegunaan besar dibandingkan kolom teks biasa. Dengan menentukan zona hit dengan garis batas atau isian latar belakang, pengguna lebih cenderung berinteraksi dengan formulir Anda atau mengidentifikasi kolom teks dalam konten yang lebih rumit.

Impor MDC-Android

Buka file build.gradle modul app dan pastikan blok dependencies menyertakan dependensi pada Android MDC:

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

Mengganti gaya kolom teks

Di shipping_info_activity.xml, tambahkan gaya berikut ke semua komponen XML TextInputLayout:

shipping_info_activity.xml

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

Setiap TextInputLayout akan terlihat seperti berikut:

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>

Bangun dan jalankan:

824c2b33592b2c7e.pngS

Semua kolom teks diperbarui untuk menggunakan desain yang lebih baru di MDC.

Menambahkan error

Kolom teks MDC memiliki presentasi error bawaan. MDC menambahkan teks merah di bawah {i>text field<i} dan memperbarui dekorasi menjadi berwarna merah.

Di ShippingInfoActivity.kt, perbarui onCreate() untuk memeriksa input teks dan menyetel error yang sesuai. Tampilannya akan terlihat seperti ini:

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!
       }
   }
}

Build dan jalankan. Tekan SAVE, tetapi biarkan setidaknya satu kolom teks kosong:

ef2a846d08f2780d.png

Kolom teks yang kosong berwarna merah dan memiliki teks error di bawahnya.

4. Perbarui tombol

MDC memiliki tombol dengan:

  • Riak tinta
  • Sudut membulat
  • Dukungan tema
  • Tata letak dan tipografi sempurna dengan piksel
  • Dibuat di AppCompatButton (class tombol Android standar) sehingga Anda tahu cara menggunakannya dalam kode.

Mengganti class tombol secara opsional

Secara default, library Material otomatis meng-inflate Tombol biasa ke Tombol MDC. Namun, Anda bisa secara opsional mengganti semua referensi ke Button dengan MaterialButton sehingga Anda bisa mengakses metode tambahan yang hanya tersedia di MaterialButton seperti mengubah radius sudut. Tombol MDC adalah komponen plug-and-play yang sederhana. Anda cukup mengganti nama komponen XML Button dengan MaterialButton, dan menerapkan gaya MaterialButton default ke MaterialButton.

Di shipping_info_activity.xml, ubah tombol Anda dari:

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

Kepada:

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

Bangun dan jalankan:

824c2b33592b2c7e.pngS

5. Tambahkan kartu

MaterialCardView adalah komponen yang dibuat di CardView dengan:

  • Elevasi dan gaya yang benar
  • Atribut lebar dan warna goresan

Menggabungkan konten ke dalam kartu

Gabungkan LinearLayout yang berisi konten Anda di shipping_info_activity.xml dengan komponen MaterialCardView, sebagai berikut:

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>

Build dan jalankan. Seluruh formulir harus digabungkan dalam kartu:

75c86ab9fa395e3c.pngS

Komponen Tampilan Kartu Material adalah cara baru yang sudah dikenal untuk menggabungkan konten Anda dengan mudah ke dalam kartu.

6. Rekap

Anda telah mengganti beberapa komponen umum untuk menampilkan nilai langsung: kolom teks, tombol, kartu, dan Anda tidak perlu mendesain ulang aplikasi secara keseluruhan. Komponen lain juga dapat membuat perbedaan besar, seperti Panel Aplikasi Atas dan TabLayout.

Langkah berikutnya

Anda dapat mempelajari lebih lanjut komponen di MDC-Android dengan mengunjungi Katalog Widget Android.

Saya dapat menyelesaikan codelab ini dengan upaya dan dalam durasi waktu yang wajar

Sangat setuju Setuju Netral Tidak setuju Sangat tidak setuju

Saya ingin terus menggunakan Komponen Material pada masa mendatang

Sangat setuju Setuju Netral Tidak setuju Sangat tidak setuju