Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android: Por onde começar?

Android: Por onde começar?

B59b1bd643ff429bb27032b05d4f2e23?s=128

Houssan A. Hijazi

December 22, 2015
Tweet

More Decks by Houssan A. Hijazi

Other Decks in Programming

Transcript

  1. CodeLab Android Instrutor Houssan A. Hijazi

  2. GDGFoz Codelab Android GDGFoz • Houssan A. Hijazi - hussanhijazi@gmail.com

    • Valmir Barbosa - valmir.php@gmail.com • Jefferson Maran - jefferson.maran@gmail.com
  3. GDGFoz Codelab 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.
  4. GDGFoz Codelab Android Codelab • Android SDK • Android Studio

    • UIElements e Android XML • Activities • List & Adapters • Serialização • Json e GSON • REST WebServices
  5. GDGFoz Codelab Android Android Studio • IDE Oficial do Android

    • “Fork” do IntelliJ IDEA (Jetbrains) • Versão estável atual: 1.5
  6. GDGFoz Codelab 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)
  7. GDGFoz Codelab 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…
  8. GDGFoz Codelab Android Let’s Code!

  9. Java e res

  10. Java e res Meu app

  11. Java e res Meu app Classes

  12. Java e res Meu app Classes Layout

  13. Java e res Animações no formato .xml utilizada no seu

    app
  14. Java e res Animações no formato .xml utilizada no seu

    app Todos os ícones e imagens utilizada no seu app
  15. 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)
  16. 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
  17. 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.
  18. 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
  19. 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.
  20. GDGFoz Codelab Android AndroidManifest.xml

  21. GDGFoz Codelab 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
  22. GDGFoz Codelab 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
  23. GDGFoz Codelab 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
  24. GDGFoz Codelab 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)
  25. GDGFoz Codelab Android Construção de Layout • XML (res/layout) •

    Define estrutura visual da interface • Separa Visão/Comportamento • Exemplo:
  26. GDGFoz Codelab 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)
  27. GDGFoz Codelab 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
  28. GDGFoz Codelab 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
  29. GDGFoz Codelab 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()
  30. 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 GDGFoz Codelab Android

    Activity Lifecycle
  31. GDGFoz Codelab Android Let’s Code!

  32. GDGFoz Codelab Android RecyclerView

  33. GDGFoz Codelab Android RecyclerView

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

  35. GDGFoz Codelab Android RecyclerView.Adapter class 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
  36. GDGFoz Codelab Android CardView

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

  38. GDGFoz Codelab Android RecyclerView/CardView Grade
 compile 'com.android.support:recyclerview-v7:22.1.1'
 compile 'com.android.support:cardview-v7:22.1.1'

  39. GDGFoz Codelab Android Consumindo uma api Retrofit + Gson +

    Picasso
  40. GDGFoz Codelab Android GDGFoz Todo Api • todo.api.gdgfoz.org/api/v1

  41. GDGFoz Codelab Android Retrofit 
 Gradle
 
 compile 'com.squareup.retrofit:retrofit:1.9.0'


  42. GDGFoz Codelab Android Retrofit

  43. GDGFoz Codelab Android Retrofit

  44. GDGFoz Codelab Android Retrofit private static RestAdapter.LogLevel logLevel = RestAdapter.LogLevel.FULL;


    private static RestAdapter.Builder builder = new RestAdapter.Builder()
 .setEndpoint(Config.BASE_API)
 .setLogLevel(logLevel);
  45. GDGFoz Codelab Android Gson public class Category {
 
 @SerializedName("id")


    @Expose
 private Integer id;
 @SerializedName("category")
 @Expose
 private String category;
 @SerializedName("src")
 @Expose
 private String src; }
  46. GDGFoz Codelab Android Picasso Grade
 compile 'com.squareup.picasso:picasso:2.5.2'

  47. GDGFoz Codelab Android Picasso

  48. GDGFoz Codelab 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/
  49. Obrigado