MDC-111 Android: como incorporar componentes do Material Design à sua base de código (Kotlin)

1. Introdução

logo_components_color_2x_web_96dp.png

Os componentes do Material Design (MDC, na sigla em inglês) ajudam os desenvolvedores a implementar o Material Design. Criados por uma equipe de engenheiros e designers de UX do Google, os MDC apresentam dezenas de componentes de interface bonitos e funcionais e estão disponíveis para Android, iOS, Web e Flutter.material.io/develop

Os componentes do Material para Android (MDC Android) não são um novo sistema ou framework que exige uma mudança de paradigma no seu app. O MDC Android é criado nas mesmas classes e APIs que você já conhece no Android, como botões e campos de texto do AppCompat. Os componentes fornecidos pelo MDC Android podem ser usados conforme necessário e melhoram imediatamente o design do seu app atual.

O que você vai criar

Neste codelab, você vai substituir alguns componentes atuais em um formulário por novos do MDC.

Componentes do MDC-Android neste codelab

  • Campos de texto
  • Botões
  • Menus

O que é necessário

  • Conhecimento básico de desenvolvimento para Android.
  • Android Studio (faça o download dele aqui, caso ainda não tenha feito)
  • Um dispositivo ou emulador Android (disponível no Android Studio)
  • O exemplo de código (confira a próxima etapa)

Como você classificaria seu nível de experiência na criação de apps Android?

Iniciante Intermediário Proficiente

2. Configurar o ambiente de desenvolvimento

Faça o download do app inicial do codelab

O app inicial está localizado no diretório material-components-android-codelabs-111-starter/kotlin. cd para esse diretório antes de começar.

... ou clone-o do GitHub

Para clonar este codelab do GitHub, execute estes comandos:

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

Carregar o código inicial no Android Studio

  1. Quando o assistente de configuração for concluído e a janela Welcome to Android Studio for exibida, clique em Open an existing Android Studio project. Acesse o diretório em que você instalou o exemplo de código e selecione kotlin -> shipping ou pesquise shipping no computador para abrir o projeto Shipping.
  2. Aguarde um pouco enquanto o Android Studio cria e sincroniza o projeto, conforme mostrado nos indicadores de atividade na parte inferior da janela.
  3. Como o SDK do Android ou as ferramentas de compilação não estão presentes, o Android Studio poderá encontrar alguns erros de compilação. Veja um exemplo a seguir. Siga as instruções no Android Studio para instalar/atualizar essas ferramentas e sincronizar o projeto.

2wEZ1kuSFwiRvi_vYXnYfwoQ5J79OVBi1SL6044ETje5cDT2rUHGy8ExjGxlBWlWuNUMf5tkLRUrr2_bz_0Im_JDvLyC-X-tNmBJvKUgsn8T4d11A1cq0ItqQl2n6DJrYKY-dEyRdw

Executar o app inicial

  1. Confira se a configuração do build à esquerda do botão Executar / Reproduzir é app.
  2. Pressione o botão verde Run / Play para criar e executar o app.
  3. Na janela Select Deployment Target, se você já tiver um dispositivo Android listado entre os dispositivos disponíveis, avance para a etapa 8. Caso contrário, clique em Create New Virtual Device.
  4. Na tela Select Hardware, selecione um smartphone, como o Pixel 2, e clique em Next.
  5. Na tela System Image, selecione uma versão recente do Android, de preferência o nível da API mais alto. Se ele não estiver instalado, clique no link Download exibido e faça o download.
  6. Clique em Next.
  7. Na tela Dispositivo virtual Android (AVD) , deixe as configurações como estão e clique em Finish.
  8. Selecione um dispositivo Android na caixa de diálogo de destino de implantação.
  9. Clique em OK.
  10. O Android Studio cria o app, faz a implantação e o abre automaticamente no dispositivo de destino.

Pronto. O app e o formulário vão aparecer.

dba8e6132a12da58.png

3. Atualizar os campos de texto

Os campos de texto do Material Design têm um grande ganho de usabilidade em relação aos campos de texto simples. Ao definir a zona de toque com um contorno ou um preenchimento de plano de fundo, os usuários têm mais chances de interagir com seu formulário ou identificar campos de texto em conteúdo mais complicado.

Importar MDC-Android

Navegue até o arquivo build.gradle do módulo app e confira se o bloco dependencies inclui uma dependência do MDC Android:

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

Substituir estilos de campo de texto

Em shipping_info_activity.xml, adicione o seguinte estilo a todos os componentes XML TextInputLayout:

shipping_info_activity.xml

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

Cada TextInputLayout precisa ter a seguinte aparência:

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>

Crie e execute:

824c2b33592b2c7e.png

Os campos de texto foram atualizados para usar os designs mais recentes no MDC.

Adicionar um erro

Os campos de texto do MDC têm apresentação de erros integrada. O MDC adiciona texto vermelho abaixo do campo de texto e atualiza as decorações para também serem vermelhas.

Em ShippingInfoActivity.kt, atualize onCreate() para verificar a entrada de texto e definir erros conforme necessário. A aparência será semelhante a esta:

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

Crie e execute. Pressione SALVAR, mas deixe pelo menos um campo de texto em branco:

ef2a846d08f2780d.png

Os campos de texto vazios ficam vermelhos e têm um texto de erro abaixo deles.

4. Atualizar o botão

O MDC tem botões com:

  • Ondulações de tinta
  • Bordas arredondadas
  • Suporte a temas
  • Layout e tipografia perfeitos
  • Criado com base em AppCompatButton (a classe de botão padrão do Android) para que você saiba como usá-los no seu código.

Substituir opcionalmente a classe do botão

Por padrão, a biblioteca Material aumenta automaticamente os botões regulares para botões do MDC. No entanto, você pode substituir todas as referências a "Button" por "MaterialButton" para acessar outros métodos disponíveis apenas em um "MaterialButton", como mudar o raio do canto. Os botões do MDC são um componente simples pronto para usar. Basta substituir o nome do componente XML Button por MaterialButton e aplicar o estilo padrão MaterialButton ao MaterialButton.

Em shipping_info_activity.xml, mude o botão de:

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

Para:

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

Crie e execute:

824c2b33592b2c7e.png

5. Adicionar card

MaterialCardView é um componente criado em CardView com:

  • Corrigir elevação e estilo
  • Atributos de largura e cor do traço

Encapsular conteúdo em um card

Envolva o LinearLayout que contém seu conteúdo em shipping_info_activity.xml com um componente MaterialCardView, da seguinte maneira:

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>

Crie e execute. Todo o formulário precisa estar envolvido em um card:

75c86ab9fa395e3c.png

O componente Material Card View é uma maneira familiar, mas nova, de encapsular facilmente seu conteúdo em um card.

6. Recapitulação

Você substituiu alguns componentes comuns para mostrar valor imediato: campos de texto, botões, cards. Não foi necessário fazer uma reformulação completa do app. Outros componentes também podem fazer uma grande diferença, como a barra de apps superior e o TabLayout.

Próximas etapas

Para aprender sobre mais componentes no MDC-Android, acesse o catálogo de widgets do Android (link em inglês).

Este codelab exigiu esforço e tempo normais para ser concluído

Concordo totalmente Concordo Não concordo nem discordo Discordo Discordo totalmente

Quero continuar usando componentes do Material Design no futuro

Concordo totalmente Concordo Não concordo nem discordo Discordo Discordo totalmente