Android: Por onde começar ?

49
CodeLab Android Instrutor Houssan A. Hijazi

Transcript of Android: Por onde começar ?

Page 1: Android: Por onde começar ?

CodeLab Android

Instrutor Houssan A. Hijazi

Page 2: Android: Por onde começar ?

GDGFozCodelab Android

GDGFoz

• Houssan A. Hijazi - [email protected]

• Valmir Barbosa - [email protected]

• Jefferson Maran - [email protected]

Page 3: Android: Por onde começar ?

GDGFozCodelab Android

Quem ajuda no Codelab ?• Houssan Ali Hijazi

• HE:labs / 2.5 anos Android

• Lucas de Castro Oliveira • Estágio em desenvolvimento na Eits - PTI. Formando

em Ciência da Computação pela Unioeste.

• Cassiano Peres• Trabalha no CIH, projeto de pesquisa e

desenvolvimento com tecnologias java para web e georreferenciamento.

Page 4: Android: Por onde começar ?

GDGFozCodelab Android

Codelab• Android SDK • Android Studio• UIElements e

Android XML• Activities • List & Adapters • Serialização• Json e GSON

• REST WebServices

Page 5: Android: Por onde começar ?

GDGFozCodelab Android

Android Studio• IDE Oficial do Android

• “Fork” do IntelliJ IDEA (Jetbrains)

• Versão estável atual: 1.5

Page 6: Android: Por onde começar ?

GDGFozCodelab Android

Android Studio• Pre-Requisitos

• Windows, Mac OS ou Linux (GNOME ou KDE)• Ambiente de tempo de execução Java (JRE) 6 ou +• Kit de desenvolvimento Java (JDK) 7 ou +• MUITA memória

• Mínimo 2GB

• Recomendado 4GB (Minha recomendação: 8GB)

Page 7: Android: Por onde começar ?

GDGFozCodelab Android

Estrutura de um projeto Android

• Gradle• Configuração do projeto• Gerenciamento de dependências/build

• Java• Classes Java (contém toda a parte lógica do app)

• Recursos• XMLs (Layout, Strings, Estilos, etc…)• Imagens (PNGs, Gifs, etc…)

• Assets• Fontes, Bancos de dados pré-compilados, etc…

Page 8: Android: Por onde começar ?

GDGFozCodelab Android

Let’s Code!

Page 9: Android: Por onde começar ?

Java e res

Page 10: Android: Por onde começar ?

Java e res

Meu app

Page 11: Android: Por onde começar ?

Java e res

Meu app

Classes

Page 12: Android: Por onde começar ?

Java e res

Meu app

Classes

Layout

Page 13: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Page 14: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Todos os ícones e imagens utilizada no seu app

Page 15: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Todos os ícones e imagens utilizada no seu app

Todos os layout .xml do seu app (Podem existir outras pastas layouts)

Page 16: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Todos os ícones e imagens utilizada no seu app

Todos os layout .xml do seu app (Podem existir outras pastas layouts)

Todos os menus .xml utilizado no seu app

Page 17: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Todos os ícones e imagens utilizada no seu app

Todos os layout .xml do seu app (Podem existir outras pastas layouts)

Todos os menus .xml utilizado no seu app

Somente o icon launcher do seu app. Não confunda essa pasta com as drawable.

Page 18: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Todos os ícones e imagens utilizada no seu app

Todos os layout .xml do seu app (Podem existir outras pastas layouts)

Todos os menus .xml utilizado no seu app

Somente o icon launcher do seu app. Não confunda essa pasta com as drawable.

Todos os textos, dimensões, cores, arrays .xml utilizados no seu app

Page 19: Android: Por onde começar ?

Java e res

Animações no formato .xml utilizada no seu app

Todos os ícones e imagens utilizada no seu app

Todos os layout .xml do seu app (Podem existir outras pastas layouts)

Todos os menus .xml utilizado no seu app

Somente o icon launcher do seu app. Não confunda essa pasta com as drawable.

Todos os textos, dimensões, cores, arrays .xml utilizados no seu app

Declarar suas Activity, permissões, services e etc.

Page 20: Android: Por onde começar ?

GDGFozCodelab Android

AndroidManifest.xml

Page 21: Android: Por onde começar ?

GDGFozCodelab Android

AndroidManifest.xml• Arquivo que descreve o conteúdo do aplicativo

• package: pacote java “default" para o App, também usado com ID único

• Componentes presentes no App• Activities, Services, BroadcastReceivers, etc.

• Permissões requeridas para o App• Features de HW/SW usadas pelo App• API Level mínimo suportado pelo App

• Algumas informações são usadas pelo Google Play Store

Page 22: Android: Por onde começar ?

GDGFozCodelab Android

• View• Classe base para qualquer componente de UI

• ViewGroup• Tipo especial de View que podem ter Views "filhas"• Gerenciadores de Layout• Mais comuns:

• LinearLayout

• RelativeLayout

• FrameLayout

• GridLayout

Construção de Layout

Page 23: Android: Por onde começar ?

GDGFozCodelab Android

ViewGroup(Layout Managers)

• LinearLayout• Organiza as Views de forma linear• android:orientation especifica a direção linear

• “horizontal" ou “vertical”

• android:layout_gravity pode ser usada• android:layout_weight

• Atribui uma “importância" aos filhos

• O espaço é dividido pela importância

Page 24: Android: Por onde começar ?

GDGFozCodelab Android

ViewGroup(Layout Managers)

• RelativeLayout• Organiza as Views de forma relativa

• Com relação ao pai ou a elas mesmas

• android:layout_alignParent[Top | Bottom | Left | Right]• Relacionado ao pai (true/false)

• android:layout_toLeftOf / layout_toRightOf• Relacionado a outro filho (@id/child_id)

• android:layout_below / layout_above• Relacionado a outro filho (@id/child_id)

Page 25: Android: Por onde começar ?

GDGFozCodelab Android

Construção de Layout• XML (res/layout)

• Define estrutura visual da interface• Separa Visão/Comportamento

• Exemplo:

Page 26: Android: Por onde começar ?

GDGFozCodelab Android

Construção de Layout• Atributos

• ID (android:id)• Definindo ID: android:id=“@+id/my_button"

• Referenciando ID: “@id/my_button” (XML) ou R.id.my_button (Java)

• LayoutParams• Define atributos relativos ao ViewGroup pai

• android:layout_*

• android:layout_width / android:layout_height obrigatórios

• Valores possíveis: “wrap_content”, “match_parent”, valor fixo

• outros atributos

• android:layout_margin (ViewGroup)

• android:layout_gravity (LinearLayout)

• android:layout_weight (LinearLayout)

Page 27: Android: Por onde começar ?

GDGFozCodelab Android

Construção de Layout• LayoutParams

• Obrigatórios• android:layout_width

• android:layout_height

• outros atributos • android:layout_margin (ViewGroup)

• android:layout_gravity (LinearLayout)• android:layout_weight (LinearLayout)

• Valores possíveis para altura/largura• “wrap_content”

• “match_parent”

• valor inteiro fixo

Page 28: Android: Por onde começar ?

GDGFozCodelab Android

Construção de Layout• Alguns atributos de View

• android:background• Valores possíveis: #RRGGBB, @drawable/image, @color/my_color

• Referenciando ID: “@id/my_button” (XML) ou R.id.my_button (Java)

• android:onClick• Valor: nome do método que será chamado ao clicar na View.

• Exemplo:• android:onClick=“viewClicked”

• public void viewClicked(View v)

• android:padding• paddingTop, paddingBottom, paddingLeft, paddingRight

• Padding != Margin

Page 29: Android: Por onde começar ?

GDGFozCodelab Android

Ligação XML - Java• Activity

• Componente que fornece uma tela para que o usuário possa interagir com a UI

• Um app pode ter n Activities• Activity não é uma View, ela possui Views

• Ligando uma Activity a um XML de layout• setContentView(R.layout.my_layout);• deve ser chamado no método onCreate()

Page 30: Android: Por onde começar ?

http://boomersurf.com/wp-content/uploads/2013/06/iphone-ca http://boomersurf.com/wp-content/uploads/2013/06/iphone-camera-icon.jpg mera-ic http://www.thekirankumar.com/blog/wp-content/

uploads/2013/03/deadlock.jpg on.jpg

GDGFozCodelab Android

Activity Lifecycle

Page 31: Android: Por onde começar ?

GDGFozCodelab Android

Let’s Code!

Page 32: Android: Por onde começar ?

GDGFozCodelab Android

RecyclerView

Page 33: Android: Por onde começar ?

GDGFozCodelab Android

RecyclerView

Page 34: Android: Por onde começar ?

GDGFozCodelab Android

RecyclerView

<android.support.v7.widget.RecyclerView android:id="@+id/list_data" android:layout_width="match_parent" android:layout_height="match_parent" />

Page 35: Android: Por onde começar ?

GDGFozCodelab Android

RecyclerView.Adapterclass CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.ViewHolder>

ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)

void onBindViewHolder(ViewHolder holder, final int position)

int getItemCount()

public class ViewHolder extends RecyclerView.ViewHolder

Page 36: Android: Por onde começar ?

GDGFozCodelab Android

CardView

Page 37: Android: Por onde começar ?

GDGFozCodelab Android

CardView

<android.support.v7.widget.CardView android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content">

Page 38: Android: Por onde começar ?

GDGFozCodelab Android

RecyclerView/CardView

Gradecompile 'com.android.support:recyclerview-v7:22.1.1'

compile 'com.android.support:cardview-v7:22.1.1'

Page 39: Android: Por onde começar ?

GDGFozCodelab Android

Consumindo uma api

Retrofit + Gson + Picasso

Page 40: Android: Por onde começar ?

GDGFozCodelab Android

GDGFoz Todo Api

• todo.api.gdgfoz.org/api/v1

Page 41: Android: Por onde começar ?

GDGFozCodelab Android

Retrofit

Gradle

compile 'com.squareup.retrofit:retrofit:1.9.0'

Page 42: Android: Por onde começar ?

GDGFozCodelab Android

Retrofit

Page 43: Android: Por onde começar ?

GDGFozCodelab Android

Retrofit

Page 44: Android: Por onde começar ?

GDGFozCodelab Android

Retrofit

private static RestAdapter.LogLevel logLevel = RestAdapter.LogLevel.FULL; private static RestAdapter.Builder builder = new RestAdapter.Builder() .setEndpoint(Config.BASE_API) .setLogLevel(logLevel);

Page 45: Android: Por onde começar ?

GDGFozCodelab Android

Gson

public class Category { @SerializedName("id") @Expose private Integer id; @SerializedName("category") @Expose private String category; @SerializedName("src") @Expose private String src; }

Page 46: Android: Por onde começar ?

GDGFozCodelab Android

Picasso

Gradecompile 'com.squareup.picasso:picasso:2.5.2'

Page 47: Android: Por onde começar ?

GDGFozCodelab Android

Picasso

Page 48: Android: Por onde começar ?

GDGFozCodelab Android

Links• Android - http://developer.android.com/intl/pt-br/index.html

• Android Studio - http://developer.android.com/intl/pt-br/sdk/index.html

• VirtualBox - https://www.virtualbox.org/

• Genymotion - https://www.genymotion.com

• JsonSchema2Pojo - http://www.jsonschema2pojo.org/

Page 49: Android: Por onde começar ?

Obrigado