curso de introdução ao android básico

47
Android Luiz Carvalho Minicurso de V Workshop Tocantinense de Sistemas de Informação Católica-TO (10 e 11 de abril)

Upload: luiz-carvalho

Post on 13-Apr-2017

88 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 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)

Page 2: Curso de Introdução ao Android Básico

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

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

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

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

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

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

Hello World

o/

Page 9: Curso de Introdução ao Android Básico

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

Icone

http://developer.android.com/design/style/iconography.html

Page 11: Curso de Introdução ao Android Básico

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

Ambiente de Desenvolvimento

SDKEmuladorLogcatadbDDMS

Page 13: Curso de Introdução ao Android Básico

SDK - EmuladorAVDDispositivo SimuladoTarget SDKArquiteturaMemóriaAlternativa Genymotion (http://www.genymotion.com/)

Page 14: Curso de Introdução ao Android Básico

SDK ManagerVersões do Android (API)Plataforms-ToolsBuild ToolsDriversSimuladores de ArquiteturaDocumentaçãoExemplosBibliotecas(Ads, Support)

Page 15: Curso de Introdução ao Android Básico

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

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

Estrutura de um Projeto Androidgradlew ou gradlew.batbuildslibsbuild.gradlesrc/main

javares

Page 18: Curso de Introdução ao Android Básico

Recursosdrawable(ldpi, mdpi, hdpi, xdpi, xxdpi, xxdpi)layoutsmenusvalues

Page 19: Curso de Introdução ao Android Básico

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

JavaActivityServiceContentProvider

Page 21: Curso de Introdução ao Android Básico

CliCiclo devida de uma

Activity

Page 22: Curso de Introdução ao Android Básico

Layouts - Linear

Page 23: Curso de Introdução ao Android Básico

Layouts - Relative

Page 24: Curso de Introdução ao Android Básico

Layouts - table

Page 25: Curso de Introdução ao Android Básico

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

Tags<TextView>

@string<ImageView><EditText><Button>

Page 27: Curso de Introdução ao Android Básico

Adicionando ComportamentoAdicionar ID às TagsfindViewByID(CastView)

Page 28: Curso de Introdução ao Android Básico

Listener

Page 29: Curso de Introdução ao Android Básico

LogTagAlt+6DEBUGWARNERRORINFOVERBOSE

Page 30: Curso de Introdução ao Android Básico

ToastMakeTextContextDuração (LENGTH_SORT, LENGTH_LONG)show()

Page 31: Curso de Introdução ao Android Básico

Novo Projeto

Page 32: Curso de Introdução ao Android Básico

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

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

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

CadastroNova->Activity

ActivityLayoutAndroidManifest

Page 36: Curso de Introdução ao Android Básico

NewHeroActivityCriar Layout

LinearLayoutAdicionar id em EditTextWrapContent

Como chegar nessa Activity?

Page 37: Curso de Introdução ao Android Básico

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

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

Iniciando uma ActivityIntent newHeroIntent = new

Intent(this,NewHeroiActivity.class);

startActivity(newHeroIntent);

Page 40: Curso de Introdução ao Android Básico

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

Salvando FormulárioCriar DAOextend SQLiteOpenHelper

implements onCreate, onUpdate, ConstructorNome e versão da base

Page 42: Curso de Introdução ao Android Básico

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

OnUpdate

db.execSQL("DROP TABLE IF EXIST heros;");this.onCreate(db);

Page 44: Curso de Introdução ao Android Básico

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

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

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);