curso de introdução ao android básico

Post on 13-Apr-2017

88 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related