Download - Curso de Introdução ao Android Básico
AndroidLuiz Carvalho
Minicurso de
V Workshop Tocantinense de Sistemas de InformaçãoCatólica-TO (10 e 11 de abril)
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
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
Droido hoje
Base de Mensagens
Alg. Gen
Servidor de
Analise
Servidorde
Distribuição
Servidorde
Distribuição
Servidorde
Distribuição
Servidorde
Distribuição
Mão na massa, o que eu preciso?- Uma IDE? Eclipse, Android Studio, …- Android SDK- Máquina (Windows, Linux, Mac)- Publicar? $25
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)
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
Hello World
o/
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.
Icone
http://developer.android.com/design/style/iconography.html
GradleGradle é um sistema de automatização de
builds, assim como o Ant e Maven, e pode ser assim definido
Ambiente de Desenvolvimento
SDKEmuladorLogcatadbDDMS
SDK - EmuladorAVDDispositivo SimuladoTarget SDKArquiteturaMemóriaAlternativa Genymotion (http://www.genymotion.com/)
SDK ManagerVersões do Android (API)Plataforms-ToolsBuild ToolsDriversSimuladores de ArquiteturaDocumentaçãoExemplosBibliotecas(Ads, Support)
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
LogcatLogs de aplicaçõesFiltrar nívelFiltrar por AppFiltrar por TagConteúdo da mensagemAté pelo PID
Estrutura de um Projeto Androidgradlew ou gradlew.batbuildslibsbuild.gradlesrc/main
javares
Recursosdrawable(ldpi, mdpi, hdpi, xdpi, xxdpi, xxdpi)layoutsmenusvalues
AndroidManifest.xmlInformações(tema, nome, icone,versão ...)restrições (ex tela)permissõesRegistro de ActivitiesDefine a primeira Activity a ser
chamada(Launcher, Main)
JavaActivityServiceContentProvider
CliCiclo devida de uma
Activity
Layouts - Linear
Layouts - Relative
Layouts - table
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
Tags<TextView>
@string<ImageView><EditText><Button>
Adicionando ComportamentoAdicionar ID às TagsfindViewByID(CastView)
Listener
LogTagAlt+6DEBUGWARNERRORINFOVERBOSE
ToastMakeTextContextDuração (LENGTH_SORT, LENGTH_LONG)show()
Novo Projeto
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);
Interação com a listalistaHeros.setOnItemClickListener
parent, itemView, position, idPegando valor:
((TextView)view).getText()parent.getItemAtPosition(position)
MakeToast;show()
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;
CadastroNova->Activity
ActivityLayoutAndroidManifest
NewHeroActivityCriar Layout
LinearLayoutAdicionar id em EditTextWrapContent
Como chegar nessa Activity?
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
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
Iniciando uma ActivityIntent newHeroIntent = new
Intent(this,NewHeroiActivity.class);
startActivity(newHeroIntent);
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
Salvando FormulárioCriar DAOextend SQLiteOpenHelper
implements onCreate, onUpdate, ConstructorNome e versão da base
OnCreate
String sql = "CREATE TABLE heros(_id PRIMARY KEY," +"name TEXT, favorite_skill TEXT, " +"ultimate_skill TEXT, rating REAL)";
db.execSQL(sql);
OnUpdate
db.execSQL("DROP TABLE IF EXIST heros;");this.onCreate(db);
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);
Salvando FormulárioAdicionar ação para o botão de salvarredirecionar para home após salvar
finish();
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);
Perguntas?
http://linkedin.com/in/luizcarvalhodev https://github.com/LuizCarvalho/http://www.facebook.com/LuizCarvalho.brhttps://plus.google.com/+LuizCarvalhoDev http://twitter.com/luizcarvalho