Share
Embed
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
Transcript
60 slides
-
Google Developers - developers.google.com Começando o Desenvolvimento de Aplicativos Android
Conhecendo e entendendo a plataforma Android +Erick Mendonça GDG Aracaju -
Google Developers - developers.google.com Começando o Desenvolvimento de Aplicativos Android
Conhecendo e entendendo a plataforma Android +Neto Marin, Google, Inc. Developer Advocate -
Google Developers - developers.google.com Developer Relations no Brasil • Blog
oficial: • http://codigo-google.blogspot.com.br • +Page brasileira: • google.com/+DesenvolvedoresGoogle • Twitter: • @googledevbr -
Google Developers - developers.google.com O que vamos utilizar hoje ?
Android Studio GitHub -
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 ? -
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 ? -
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. -
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 -
Google Developers - developers.google.com Estrutura do Projeto Como o projeto
de um app Android é organizado -
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 -
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 ! -
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... -
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 -
Google Developers - developers.google.com Altere o layout do Fragment principal
para algo similar ao que está sendo mostrado no emulador: Atividade -
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 ! -
Google Developers - developers.google.com Integrando layout e código Porque além
de bonitinho, tem que funcionar! -
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) -
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(); } }); -
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… -
Google Developers - developers.google.com Cuidando do Fluxo da Aplicação Alternando
e navegando entre activities e fragments -
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 -
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); } -
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 ? -
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 -
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. -
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 ! -
Google Developers - developers.google.com Conectando o App a Internet Não
deixe seu aplicativo falando sozinho -
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 -
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 -
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 -
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 -
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ó ? -
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. ;-) -
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 ! -
Google Developers - developers.google.com Lição de Casa Mais para estudar
sobre a plataforma móvel mais popular ;-) -
Google Developers - developers.google.com • SharedPreferences • SQLite • ContentProviders
• Arquivos e SDCard Documentação: Saving Data → http://goo.gl/ghD4zs Persistência -
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 -
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 -
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