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

Começando o Desenvolvimento de Aplicativos Android

Começando o Desenvolvimento de Aplicativos Android

Apresentação baseada no material criado por Antonio Marin https://plus.google.com/+NetoMarin/posts

Erick Mendonça

February 07, 2015
Tweet

More Decks by Erick Mendonça

Other Decks in Programming

Transcript

  1. Google Developers - developers.google.com Começando o Desenvolvimento de Aplicativos Android

    Conhecendo e entendendo a plataforma Android +Erick Mendonça GDG Aracaju
  2. Google Developers - developers.google.com Começando o Desenvolvimento de Aplicativos Android

    Conhecendo e entendendo a plataforma Android +Neto Marin, Google, Inc. Developer Advocate
  3. Google Developers - developers.google.com Developer Relations no Brasil • Blog

    oficial: • http://codigo-google.blogspot.com.br • +Page brasileira: • google.com/+DesenvolvedoresGoogle • Twitter: • @googledevbr
  4. Google Developers - developers.google.com • Um dos principais elementos de

    um app Android • Responsável pela interface com o usuário. • Todo app que tenha UI, tem que ter pelo menos uma Activity para funcionar. Calma aí… O que é Activity ?
  5. Google Developers - developers.google.com • Um "fragmento" de UI •

    Possui seu próprio ciclo de vida • Pode ser inserido / removido em uma Activity • Permite reuso de código • Principal elemento para criar interfaces para múltiplos tipos de devices e tamanho de tela E esse tal de Fragment ?
  6. Google Developers - developers.google.com Ficou perdido ? Não deu tempo

    ? Repositório no GitHub com o código completo: → github.com/DesenvolvedoresGoogle → codelab-android-openweatherapi A cada passo será colocado o comando para clonar o estágio esperado do projeto após cada etapa.
  7. Google Developers - developers.google.com Primeiro faço o clone: git clone

    https://github.com/DesenvolvedoresGoogle/codelab-android- openweatherapi.git Agora o download da tag: cd codeladb-android-openweatherapi git checkout step-0 Alcançando a turma
  8. Google Developers - developers.google.com Tipos de resources: /res/layout /res/drawable /res/menu

    /res/anim /res/values /res/color /assets Qualificadores /res/<tipo>[-<qualificador>]* Ex: /res/layout-large, /res/menu-v14, /res/layout-port, /res/layout- land, /res/values-en, ... Resources e Assets
  9. Google Developers - developers.google.com É o elemento para construção de

    componentes de interfaces com o usuário para Android. É a classe base dos Widgets, que são criados para criar componentes de UI como botões, textos, campos e etc. E a subclasse ViewGroup é a base para os layouts, que são os containers para armazenar outras views. Tudo é uma View !
  10. Google Developers - developers.google.com UI Widgets TextView Button / ImageButton

    RadioButton CheckBox Switch ToggleButton ImageView ProgressBar SeekBar RatingBar Spinner WebView ListView GridView RecycleView e muito mais...
  11. Google Developers - developers.google.com Explore os diferentes layouts e UI

    widgets que estão disponíveis na plataforma Android. Tente, por exemplo, reproduzir uma tela de algum aplicativo que você use e ache interessante. Hora do Código
  12. Google Developers - developers.google.com Altere o layout do Fragment principal

    para algo similar ao que está sendo mostrado no emulador: Atividade
  13. Google Developers - developers.google.com Fazer o checkout da tag step-1.

    No diretório raiz do repositório que foi clonado: git checkout step-1 Todo mundo junto !
  14. Google Developers - developers.google.com Ligando os pontos android:id= "@+id/cidadeEditText" android:id=

    "@+id/pesquisarButton" android.widget.EditText android.widget.Button findViewById(R.id.cidadeEditText) findViewById(R.id.pesquisarButton)
  15. Java Google Developers - developers.google.com Tratando ações Button pesquisarButton =

    (Button) rootView.findViewById(R.id.pesquisarButton); pesquisarButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { pesquisarTempoCidade(); } });
  16. Google Developers - developers.google.com Mesma lógica para diferentes ações e

    listeners: setOnLongClickListener setOnTouchListener setOnDragListener onScrollChanged Pode ser criado como classe interna anônima ou definir o próprio Fragment como listener dos objetos. Listeners e mais listeners…
  17. Google Developers - developers.google.com Mudança de Activity • Criar nova

    classe que herda de Activity • Registrar a Activity no AndroidManifest • Criar Intent que deverá ser chamada • Executar o método startActivity com a Intent criada
  18. Java Google Developers - developers.google.com Mudando de Activity pesquisarButton.setOnClickListener(new View.OnClickListener()

    { @Override public void onClick(View v) { if (cidadeEditText != null && cidadeEditText.getText() != null && cidadeEditText.getText().toString().length() > 0) { pesquisarTempoCidade(); } else { Toast.makeText(getActivity(), "Cidade não preenchida", Toast.LENGTH_SHORT).show(); } } }); private void pesquisarTempoCidade() { //Método que irá efetuar a busca Intent i = new Intent(getActivity(), TempoCidadeActivity.class); startActivity(i); }
  19. Google Developers - developers.google.com • Uma "intenção" de se executar

    alguma coisa • Um outro aplicativo • Uma activity do seu próprio aplicativo • Iniciar um serviço • Fazer um Broadcast • Existem os com nomes já determinados ou você pode criar a sua própria Intent Explicando melhor: O que é uma Intent ?
  20. Google Developers - developers.google.com • Deve estar presente em todos

    aplicativos Android • Deve ser colocado na raiz do projeto • Elementos e permissões devem registrados: • Activity • Services • BroadcastReceiver • Provider • Permissões • Versões de SDK e etc… AndroidManifest.xml
  21. Google Developers - developers.google.com Atividade Alterar o aplicativo da seguinte

    forma: • Criar nova Activity para mostrar pesquisa do tempo • Quando o botão Pesquisar for pressionado: • Validar se o usuário digitou alguma cidade • Mostrar Toast se não tiver digitado e não mudar de Activity • Iniciar a nova Activity Criada Desafio: • Mostrar o nome da cidade digitada na Activity anterior.
  22. Google Developers - developers.google.com Fazer o checkout da tag step-2.

    No diretório raiz do repositório que foi clonado: git checkout step-2 Todo mundo junto !
  23. Google Developers - developers.google.com • Nada muda, em código, em

    tipos diferentes de rede • É possível saber quando conectado a WiFi ou 3G/4G • Deve ser adicionado à permissão ao AndroidManifest • <uses-permission android:name="android.permission.INTERNET"/> • Conexões de rede não podem estar na Main Thread • Operações de I/O devem ser SEMPRE deslocadas para outras threads para não travar o aplicativo. Conectando o App a Internet
  24. Google Developers - developers.google.com • É possível criar uma worker

    thread • Mesma forma que em uma aplicação Java "convencional" • Utilização de AsyncTask • Documentação oficial: http://goo.gl/XLHZwC • Vídeo "Usando AsyncTask": http://youtu.be/UgRHopzzg9c • Utilização de um Service • Também há a sub-classe IntentService Multithreading
  25. Google Developers - developers.google.com • Elemento de um aplicativo Android

    responsável por executar uma tarefa que não necessite de UI • Um Service não necessariamente significa que sua tarefa está sendo executada em segundo plano. • A menos que esteja utilizando um IntentService • Um service pode ser disparado por outros elementos de um aplicativo, como Activities ou BroadcastReceiver. • Mas também pode ser ativado pelo próprio sistema. Service
  26. Java Google Developers - developers.google.com InputStream is = null; URL

    url = new URL("http://api.openweathermap.org/data/2.5/weather?q=Belo% 20Horizonte"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.connect(); if (con.getResponseCode() == HttpURLConnection.HTTP_OK) { is = con.getInputStream(); //Método fictício para transformar em String o retorno return getStringFromInputStream(is); } else { return null; } Executando um GET na API
  27. Google Developers - developers.google.com Uma série com 3 posts no

    Código Google pode te ajudar? Comunicação Web em apps Android • Parte I: http://goo.gl/SVsY5X • Parte II: http://goo.gl/W2G7q1 • Parte III: http://goo.gl/52GuVA Endereço do blog: http://codigo-google.blogspot.com.br Mas é só ?
  28. Google Developers - developers.google.com Atividade Partindo do exercício anterior, ao

    entrar na nova Activity executar um GET na API do OpenWeatherMap para obter as condições climáticas da cidade que o usuário digitar na Activity anterior. Se lembrar de tratar respostas inesperadas ou indesejadas do Web Service. ;-)
  29. Google Developers - developers.google.com Fazer o checkout da tag step-3.

    No diretório raiz do repositório que foi clonado: git checkout step-3 Todo mundo junto !
  30. Google Developers - developers.google.com • SharedPreferences • SQLite • ContentProviders

    • Arquivos e SDCard Documentação: Saving Data → http://goo.gl/ghD4zs Persistência
  31. Google Developers - developers.google.com Um BroadcastReceiver, ou simplesmente receiver, pode

    ser programado para efetuar determinada operação quando uma certa ação ocorrer ou alguém enviar um "sinal" para o receiver. Exemplos: • Iniciar um serviço após o boot do aparelho • Sincronizar dados quando o celular estiver na tomada • Exibir uma notificação quando uma ação acontecer BroadcastReceiver
  32. Google Developers - developers.google.com • Exibidas na central de notificações.

    • Fica visível ao puxar a barra de sistema para baixo • Forma de aumentar a interação com o usuário. • Lembre-o que seu app existe • Use de forma inteligente, não seja chato ! • É sincronizável com o Android Wear Documentação: Notifying the user → http://goo.gl/6gPkSD Notificações
  33. Google Developers - developers.google.com • Acesso ao aplicativo direto na

    tela inicial ou de bloqueio do dispositivo. • Aumenta o engamento do usuário. • Permite ações mais rápidas. Documentação: App Widgets → http://goo.gl/H4e3BW Homescreen e Lockscreen Widgets