Introdução
O Material Design é uma nova filosofia de design apresentada pela Google na google IO 2014. Trouxe muitos funcionalidades como Material Theme, Sombras personalizadas, Vector Drawables e animações personalizadas. deixando o layout do seu aplicativo moderno e ágil. Se você ainda não possui o Android Studio em sua máquina saiba como instalar aqui. Neste tutorial cobriremos a configuração do tema com material design e adicionaremos um navigation drawer utilizando o RecyclerView.
Customização do Tema
Esta
parte da configuração é de extrema importância, pois é o primeiro
contato que o seu usuário terá com o app, ou seja, é o layout em si, a
escolha das cores, definição de temas, essas configurações serão a
identidade de seu app no mercado. Com o Android Studio aberto, crie um novo aplicativo em File->New Project, quando estiver na escolha de qual do minimum SDK, escolha a API 15, em seguida na criação da Activity escolha Blanck Activity, logo em seguida finalize a criação do projeto. O que estaremos alterando a seguir serão essas configurações:
Para escolher essas cores indico o material palette,
várias cores para a configuração do tema estão disponíveis lá. Logo
após a escolha de suas cores iremos implementa-las com a ajuda do
Android Studio. Abra res->values->colors.xml e adicione as seguintes cores:
<resources><color name="colorPrimary">#2196F3</color>
<color name="colorPrimaryDark">#1976D2</color>
<color name="colorAccent">#FF4081</color>
<color name="textColor">#FFF</color>
</resources>
Agora abra res->values->strings.xml e adicione o seguinte código, essas infomações serão necessárias para a construção dos textos dentro de nosso app:
<resources> <string name="app_name">MaterialExample</string> | |
<string name="action_settings">Configurações</string> | |
<string name="action_search">Procurar</string> | |
<string name="drawer_open">Abrir</string> | |
<string name="drawer_close">Fechar</string> | |
<string name="nav_item_home">Inicio</string> | |
<string name="nav_item_friends">Amigos</string> | |
<string name="nav_item_notifications">Mensagens</string> | |
<string-array name="nav_drawer_labels"> | |
<item>@string/nav_item_home</item> | |
<item>@string/nav_item_friends</item> | |
<item>@string/nav_item_notifications</item> | |
</string-array> | |
<string name="title_messages">Messages</string> | |
<string name="title_friends">Friends</string> | |
<string name="title_home">Home</string> | |
</resources> |
Depois de adicionarmos o estilo padrão para os dispositivos, adicionaremos o estilo específico para a versão Android Lollipop ou superior. Na pasta res crie uma nova pasta com o nome values-v21, dentro desta pasta crie um novo arquivo style.xml e adiciona o seguinte código:
<resources><style name="MyMaterialTheme" parent="MyTheme">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
</resources>
Neste momento nosso estilo básico está pronto. Para aplicarmos o tema precisamos abrir AndroidManifest.xml e alterar o tema de nossa activity para o nosso tema personalizado:
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/MyMaterialTheme">
<activity android:name="activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
O próximo passo é adicionar a ToolBar que foi introduzida nesta versão do android. Para isso criaremos um novo layout para a toolbar e sempre que precisarmos dela em alguma activity, apenas a incluíremos. Crie um arquivo xml chamado toolbar.xml dentro da pasta res->layout e adicione o elemento android.support.v7.widget.Toolbar isso nos permitirá criar a toolbar com altura e estilo específico:
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
android:id
=
"@+id/toolbar"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:minHeight
=
"?attr/actionBarSize"
android:background
=
"?attr/colorPrimary"
local:theme
=
"@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme
=
"@style/ThemeOverlay.AppCompat.Light"
/>
Agora abra activity_main.xml e adicione nossa toolbar com um simples include:
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
".MainActivity"
>
<
LinearLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:layout_alignParentTop
=
"true"
android:orientation
=
"vertical"
>
<
include
android:id
=
"@+id/toolbar"
layout
=
"@layout/toolbar"
/>
</
LinearLayout
>
</
RelativeLayout
>
Vamos adicionar um titulo para a nossa toolbar, abra a MainActivity.java e adicione as seguintes mudanças.
- Extenda a activity com AppCompatActivity.
- Habilite a nossa toolbar com setSupportActionBar().
- Em seguida sobrescreva os métodos onCreateOptionsMenu() e onOptionItemSelected() para que nossa action bar possa sofrer ações como busca links e etc.
import
android.os.Bundle;
import
android.support.v7.app.AppCompatActivity;
import
android.support.v7.widget.Toolbar;
public
class
MainActivity
extends
AppCompatActivity {
private
Toolbar mToolbar;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(
true
);
}
}
Adicionando Navigation Drawer
A grande novidade aqui, será a utilização do RecycleView ao invés do ListView das versões anteriores. Em sua pasta java crie três novos pacotes: activity, adapter e model. E coloque sua ActivityMain.java para o pacote activity.
Em seguida abra build.gradle que está localizado no modulo app e adicione as novas dependências:
compile fileTree(dir:
'libs'
, include: [
'*.jar'
])
compile
'com.android.support:appcompat-v7:24.0.0'
compile
'com.android.support:recyclerview-v7:24.0.+'
Dentro de sua pasta model crie uma nova classe NavDrawerItem.java. Esta classe define cada linha de nossa navigation drawer:
package com.example.MaterialExample.model;
public
class
NavDrawerItem {
private
boolean
showNotify;
private
String title;
public
NavDrawerItem() {
}
public
NavDrawerItem(
boolean
showNotify, String title) {
this
.showNotify = showNotify;
this
.title = title;
}
public
boolean
isShowNotify() {
return
showNotify;
}
public
void
setShowNotify(
boolean
showNotify) {
this
.showNotify = showNotify;
}
public
String getTitle() {
return
title;
}
public
void
setTitle(String title) {
this
.title = title;
}
}
Dentro de res->layout crie um novo arquivo xml chamado nav_drawer_row.xml. Esse layout renderiza cada linha no menu do navigation drawer. Se quiser customizar os itens da navegação isso será feito nesse arquivo:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true">
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="30dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textSize="15dp"
android:textStyle="bold" />
</RelativeLayout>
Para adicionarmos aquela imagem de perfil padrão no cabeçalho de nossa nav drawer precisamos baixar o icone aqui e o importe em nosso projeto.
Crie outro arquivo xml chamado fragment_navigation_drawer.xml. Este layout renderiza a visualização completa de nossa navigation drawer. Contém uma seção de cabeçalho para informações do usuário e um RecyclerView para listar as opções do menu:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<RelativeLayout
android:id="@+id/nav_header_container"
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_alignParentTop="true"
android:background="@color/colorPrimary">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/ic_profile"
android:scaleType="fitCenter"
android:layout_centerInParent="true" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/nav_header_container"
android:layout_marginTop="15dp" />
</RelativeLayout>
Como nossa RecyclerView é personalizável precisamos de uma classe adaptadora para renderizar o nosso layout. Dentro do pacote adapter criado anteriormente, crie uma nova classe chamada NavigationDrawerAdapter.java.
Dentro do pacote activity crie um novo fragmento chamado FragmentDrawer.java. Clique direito em activity ->new->fragment->fragment(blanck) e adicione o código.
Agora abra a activity_main.xml, estaremos adicionando nossa navigation_drawer.
O próximo passo é modificar nossa ActivityMain.java adicionando o seguinte código: ActivityMain
Dentro do pacote activity crie um novo fragmento chamado FragmentDrawer.java. Clique direito em activity ->new->fragment->fragment(blanck) e adicione o código.
Agora abra a activity_main.xml, estaremos adicionando nossa navigation_drawer.
O próximo passo é modificar nossa ActivityMain.java adicionando o seguinte código: ActivityMain
E
finalizamos, assim que rodar o seu aplicativo poderá ver nossa
NavigationDrawer em funcionamento e nosso tema aplicado com Material
Design como o exemplo a seguir:
Nos
próximos tutoriais continuaremos explorando o material design e
adicionaremos funcionalidades para os links da nossa navigation drawer.
Até a próxima!
Baseado em: material design, androidhive .
Código Fonte: MaterialExample
0 comentários:
Postar um comentário