Curso de Introdução ao Android Básico
-
Upload
luiz-carvalho -
Category
Software
-
view
88 -
download
0
Transcript of Curso de Introdução ao Android Básico
![Page 1: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/1.jpg)
AndroidLuiz Carvalho
Minicurso de
V Workshop Tocantinense de Sistemas de InformaçãoCatólica-TO (10 e 11 de abril)
![Page 2: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/2.jpg)
Luiz Carvalho
www.redrails.com.br
Bacharel em Ciência da Computação
Pós Graduado em Telemática
Criador do Droido Mensagens
Analista na Defensoria Pública
![Page 3: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/3.jpg)
Alguns Números (dez->)- 94 países- Mais de 1,5 Milhão de acesos- Quase 400 mil envios- Mais de 240 mil instalações(~3%)- Avaliação 4,29 Estrelas- quase 2 mil reviews
![Page 4: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/4.jpg)
Droido hoje
Base de Mensagens
Alg. Gen
Servidor de
Analise
Servidorde
Distribuição
Servidorde
Distribuição
Servidorde
Distribuição
Servidorde
Distribuição
![Page 5: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/5.jpg)
Mão na massa, o que eu preciso?- Uma IDE? Eclipse, Android Studio, …- Android SDK- Máquina (Windows, Linux, Mac)- Publicar? $25
![Page 6: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/6.jpg)
Ambiente- Eclipse + ADT
- Instalar (https://dl-ssl.google.com/android/eclipse/)- ADT Bundle
- (http://developer.android.com/sdk/installing/bundle.html)- Android Studio (Direct Link ou apt-get)
![Page 7: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/7.jpg)
Android StudioBaseado no InteliJ IDEA preview de LayoutsModerno sistema de
dependências (Maven)Moderno sistema de
build (Gradle)Sistema de migração
de projetos do ADT
![Page 8: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/8.jpg)
Hello World
o/
![Page 9: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/9.jpg)
Criação do projetoApplication Name: Nome da aplicação, será exibido para o usuário no Android e na Play Store.
Project Name: Nome do projeto, identifica a pasta que será criada na área de trabalho do Eclipse.
Package Name: Nome do pacote principal da aplicação, seguindo as convenções do Java. Deve ser único.
Minimum Required SDK: Menor versão do Android suportada pela aplicação. Quanto menor a versão, mais dispositivos serão compatíveis com a aplicação. Em contra-partida, componentes ou features mais recentes (a princípio) não estarão disponíveis em versões mais antigas. Se sua aplicação utiliza recursos essenciais disponíveis apenas em versões mais recentes do Android deverá ser selecionada a menor versão que disponibiliza estes recursos.
Target SDK: Indica a maior versão do Android na qual a aplicação foi testada.
Compile With: Indica com qual versão entre os SDK’s baixados a aplicação foi compilada. Embora a aplicação possa ser compilada com versões anteriores, é recomendado usar o SDK mais recente, assim é possível usar novas features e otimizar a aplicação para os dispositivos mais recentes.
Theme: Especifica o estilo de interface do Android que será usado na aplicação.
![Page 10: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/10.jpg)
Icone
http://developer.android.com/design/style/iconography.html
![Page 11: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/11.jpg)
GradleGradle é um sistema de automatização de
builds, assim como o Ant e Maven, e pode ser assim definido
![Page 12: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/12.jpg)
Ambiente de Desenvolvimento
SDKEmuladorLogcatadbDDMS
![Page 13: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/13.jpg)
SDK - EmuladorAVDDispositivo SimuladoTarget SDKArquiteturaMemóriaAlternativa Genymotion (http://www.genymotion.com/)
![Page 14: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/14.jpg)
SDK ManagerVersões do Android (API)Plataforms-ToolsBuild ToolsDriversSimuladores de ArquiteturaDocumentaçãoExemplosBibliotecas(Ads, Support)
![Page 15: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/15.jpg)
Android Device Monitor (DDMS)Consumo de memórialog de eventos (logcat)ProcessosSimulação de eventos no EmuladorTransferência de arquivosVisualização da estrutura do appScreenshots
![Page 16: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/16.jpg)
LogcatLogs de aplicaçõesFiltrar nívelFiltrar por AppFiltrar por TagConteúdo da mensagemAté pelo PID
![Page 17: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/17.jpg)
Estrutura de um Projeto Androidgradlew ou gradlew.batbuildslibsbuild.gradlesrc/main
javares
![Page 18: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/18.jpg)
Recursosdrawable(ldpi, mdpi, hdpi, xdpi, xxdpi, xxdpi)layoutsmenusvalues
![Page 19: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/19.jpg)
AndroidManifest.xmlInformações(tema, nome, icone,versão ...)restrições (ex tela)permissõesRegistro de ActivitiesDefine a primeira Activity a ser
chamada(Launcher, Main)
![Page 20: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/20.jpg)
JavaActivityServiceContentProvider
![Page 21: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/21.jpg)
CliCiclo devida de uma
Activity
![Page 22: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/22.jpg)
Layouts - Linear
![Page 23: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/23.jpg)
Layouts - Relative
![Page 24: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/24.jpg)
Layouts - table
![Page 25: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/25.jpg)
TagsAtributos obrigatórios
layout_width e layout_heightwrap_content, fill_parent, match_parent
px: Correspondente ao número de pixels da tela. sp: (Scale-independent Pixels) Idem ao dp, mas também considera o
tamanho da fonte que o usuário está utilizando. dip ou dp: (Density-independent Pixels) Essa unidade é relativa à resolução
da tela (recomendada para maioria dos casos).1dpi = 1px mdpi
![Page 26: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/26.jpg)
Tags<TextView>
@string<ImageView><EditText><Button>
![Page 27: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/27.jpg)
Adicionando ComportamentoAdicionar ID às TagsfindViewByID(CastView)
![Page 28: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/28.jpg)
Listener
![Page 29: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/29.jpg)
LogTagAlt+6DEBUGWARNERRORINFOVERBOSE
![Page 30: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/30.jpg)
ToastMakeTextContextDuração (LENGTH_SORT, LENGTH_LONG)show()
![Page 31: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/31.jpg)
Novo Projeto
![Page 32: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/32.jpg)
Lista de HeróisListagem de Heróis
<ListView>String[] heros = {“hero1”...}android.R.layout.simple_list_item_1ArrayAdapter<String> heroAdapter = new
ArrayAdapter<String>(this,layout,heros);lista.setAdapter(heroAdapter);
![Page 33: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/33.jpg)
Interação com a listalistaHeros.setOnItemClickListener
parent, itemView, position, idPegando valor:
((TextView)view).getText()parent.getItemAtPosition(position)
MakeToast;show()
![Page 34: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/34.jpg)
Interação com a listaClique longo
return false: não consome o evento e deixa que o o toque simples seja executado
return true; consome o evento e não invoca o toque simples;
![Page 35: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/35.jpg)
CadastroNova->Activity
ActivityLayoutAndroidManifest
![Page 36: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/36.jpg)
NewHeroActivityCriar Layout
LinearLayoutAdicionar id em EditTextWrapContent
Como chegar nessa Activity?
![Page 37: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/37.jpg)
ActionBarIconsComo conseguir icones?
Faça os seusPegue emprestado do SDKBaixe icones oficiais no site do Developer Android (
https://developer.android.com/design/downloads/index.html)[01_core_new] (http://redrails.com.br/)
android:icon
![Page 38: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/38.jpg)
IntentÉ um pedido que é encaminhado ao sistema operacional
que verificará qual é a “Intenção da mensagem” e tomará uma decisão.
Chamadas TelefônicasAbrir outro AppMandar um SMSAbrir uma url no browserIniciar uma Activity
![Page 39: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/39.jpg)
Iniciando uma ActivityIntent newHeroIntent = new
Intent(this,NewHeroiActivity.class);
startActivity(newHeroIntent);
![Page 40: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/40.jpg)
Salvando formulárioPegar todos os valores do FormulárioCriar Model Hero;
long id;String name;String favoriteSkill;String ultimateSkill; Double rating;
Adicionar camposGerar Getters and Setters(Alt+Insert)Setar valores da View no Model
![Page 41: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/41.jpg)
Salvando FormulárioCriar DAOextend SQLiteOpenHelper
implements onCreate, onUpdate, ConstructorNome e versão da base
![Page 42: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/42.jpg)
OnCreate
String sql = "CREATE TABLE heros(_id PRIMARY KEY," +"name TEXT, favorite_skill TEXT, " +"ultimate_skill TEXT, rating REAL)";
db.execSQL(sql);
![Page 43: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/43.jpg)
OnUpdate
db.execSQL("DROP TABLE IF EXIST heros;");this.onCreate(db);
![Page 44: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/44.jpg)
Salvar Alunocriar método salvarHero(Hero hero)
SQLiteDatabase db = getWritableDatabase();ContentValues valores = new ContentValues();valores.put("name",hero.getName());valores.put("favorite_skill", hero.getFavoriteSkill());valores.put("ultimate_skill", hero.getUltimateSkill());valores.put("rating",hero.getRating());
db.insert("heros",null, valores);
![Page 45: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/45.jpg)
Salvando FormulárioAdicionar ação para o botão de salvarredirecionar para home após salvar
finish();
![Page 46: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/46.jpg)
Atualizando ListViewAtualização do Adapter no onResumeTornar listaHerosView attributo da classe
HeroDAO heroDao = new HeroDAO(this);List<Hero> listHeros = heroDao.getHeros();int layout = android.R.layout.simple_list_item_1;ArrayAdapter<Hero> heroAdapter = new ArrayAdapter<Hero>(this,layout,listHeros);listaHerosView.setAdapter(heroAdapter);
![Page 47: Curso de Introdução ao Android Básico](https://reader035.fdocumentos.tips/reader035/viewer/2022081521/58a00ab81a28abd40b8b6b27/html5/thumbnails/47.jpg)
Perguntas?
http://linkedin.com/in/luizcarvalhodev https://github.com/LuizCarvalho/http://www.facebook.com/LuizCarvalho.brhttps://plus.google.com/+LuizCarvalhoDev http://twitter.com/luizcarvalho