projeto avançado de software ii 2 – revisão da lição 1 eduardo de lucena falcão
TRANSCRIPT
![Page 1: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/1.jpg)
Projeto Avançado de Software II
2 – Revisão da Lição 1
Eduardo de Lucena Falcão
![Page 2: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/2.jpg)
2
Tópicos básicos
• Instalação do Android Studio• Criação e execução do HelloWorld• Configuração de um novo dispositivo no AVD
Manager ou no Genymotion
![Page 3: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/3.jpg)
3
The Android Platform
Android Software Stack
![Page 4: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/4.jpg)
4
Linux kernelA base de toda a arquitetura do Android.
Responsabilidades:1. Responsável por tarefas de baixo
nível relacionadas ao Sistema Operacional:
1. gerenciamento de memória;2. gerenciamento de processos; 3. operações em arquivos;4. comunicação através da rede.
2. Específicas do Android:1. gerenciamento de energia;2. gerenciamento de memória
(low memory killer)3. comunicação inter-processos4. gerenciamento dos drivers do
dispositivo móvel: câmera, display, wi-fi, audio, etc.
![Page 5: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/5.jpg)
5
• Quais das seguintes funcionalides do Kernel Linux da arquitetura Android você acha que seria possível encontrar em outros Kernels de Linux convencionais?– Arquitetura de permissões;– Criação de arquivos;– Comunicação através da rede;– Gerenciamento de memória no estilo “Low
Memory Killer”;– Drivers de dispositivos;– Gerenciamento de energia.
![Page 6: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/6.jpg)
6
Native Libraries
Inclui uma variedade de bibliotecas de sistemas escritas geralmente em C/C++ que são utilizadas para executar atividades básicas do dispositivo.
1. Webkit: renderizar páginas web2. Graphics – surface manager:
renderização da tela3. Media framework: reprodução de
áudio e vídeo4. OpenGL: renderização de gráficos
de alta performance (3D)5. SQLite: gerenciamento de bancos
de dados relacionais
![Page 7: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/7.jpg)
7
Android Runtime
Bibliotecas Java e o coração do Android: Dalvik Virtual Machine
Dalvik VM: • similar à JVM mas otimizada para o
contexto de dispositivos móveis (CPUs mais lentas, capacidade de memória e bateria limitadas);
• Usa funcionalidades da camada subjacente (linux kernel)
![Page 8: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/8.jpg)
8
• Aplicativos Android executam em uma JVM padrão?– Sim;– Não.
![Page 9: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/9.jpg)
9
Application FrameworkConjunto de componentes reutilizáveis que a maioria da aplicações Android utilizam para executar.
1. Activity Manager: controla todos os aspectos do ciclo de vida de uma aplicação, além da pilha de navegação;
2. Content Providers: permite aplicações compartilhar dados entre si;
3. Resource manager: recursos não compiláveis do app - strings, graphics e arquivos de layout
4. Notification Manager: permite apps exibir notificações e alertas para o usuário;
5. Location manager: dá acesso à serviços de localização, permitindo um app receber atualizações de mudança de localização.
![Page 10: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/10.jpg)
10
• Quais das seguintes funções você acha que o Activity Manager executa?– Iniciar e parar Activities;– Gerenciar navegação entre Activities;– Gerenciar a barra de status.
• Qual das seguintes afirmações contem a vantagem de usar Content Providers para gerenciar os dados de uma aplicação?– O processamento é mais rápido usando um Content Provider– Os dados podem ser inseridos em uma aplicação mas podem
ser facilmente acessados em outras aplicações– Android só tem essa maneira de gerenciar dados.
![Page 11: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/11.jpg)
11
• Quais das seguintes funções você acha que o Activity Manager executa?– Iniciar e parar Activities;– Gerenciar navegaçãeo entre Activities;– Gerenciar a barra de status.
• Qual das seguintes afirmações contem a vantagem de usar Content Providers para gerenciar os dados de uma aplicação?– O processamento é mais rápido usando um Content Provider– Os dados podem ser inseridos em uma aplicação mas podem
ser facilmente acessados em outras aplicações– Android só tem essa maneira de gerenciar dados.
![Page 12: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/12.jpg)
12
• A Área de Notificação ou Bara de Status é uma parte do sistema que as aplicações acessam através do Gerenciador de Notificações. Quais das seguintes explicações aparentam ser as possíveis razões pelas quais o Android projetou a Área de Notificação deste modo?– Para obter melhor desempenho de aplicação;– Para prover um modo de informar usuários sobre
eventos for a da Interface de Usuário da Activity;– Para prover uma área controlada pelo sistema que
é quase sempre visível ao usuário.
![Page 13: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/13.jpg)
13
Application
Camada em que rodamos nossas aplicações e as aplicações padrão.
Standard apps:1. Home- tela principal;2. Contacts – banco de dados dos
contatos3. Phone – app para efetuar ligações4. Browser5. Email6. Nossas apps
![Page 14: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/14.jpg)
14
Build e Gradle
• Pode ser especificado no gradle ou no manifest– compiledSdkVersion: versão usada para compilar o
projeto– minSdkVersion: filtro de corte mínimo
• versão mínima do SDK que os aparelhos devem possuir para rodar seu app
– TargetSDK: não é um filtro de corte máximo• especifica a versão na qual o app foi testado• Porém, caso as futuras versões do SDK mudem
significativamente, a plataforma usa o targetSDK para rodar o app de modo mais estável
MAS, o Gradle sobrescreve o valores do manifest
![Page 15: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/15.jpg)
15
Processo de build
![Page 16: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/16.jpg)
16
API Levels
• Define:– Um conjunto de classes e pacotes– Elementos e atributos XML que podem ser usados
no manifest– Elementos e atributos XML que podem ser usados
para declarar e acessar recursos (ex.: layout, imagens, strings)
– Um conjunto de Intents– Um conjunto de Permissions
![Page 17: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/17.jpg)
17
Interface Elements
• Drag and Dropping– TextView– ImageView– ListView
![Page 18: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/18.jpg)
18
Visão Geral de uma User Interface
• Todos os elementos da interface do usuário em um aplicativo para Android são criados usando objetos View e ViewGroup;
• Uma View é um objeto que desenha algo na tela com o qual o usuário pode interagir;
• Um ViewGroup é um objeto que contém outros objetos View e ViewGroups, para definir o layout da interface.
![Page 19: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/19.jpg)
19
• Para declarar o layout, é possível instanciar objetos View no código e começar a criar uma árvore. Mas a forma mais fácil e efetiva de definir o layout é com um arquivo XML. O XML oferece uma estrutura legível por humanos para o layout, similar a HTML.
![Page 20: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/20.jpg)
20
Layout• O layout define a estrutura visual para uma interface do usuário,
como a IU de uma Activity ou de um widget de aplicativo.• É possível declarar um layout de dois modos: XML ou
programaticamente.• A vantagem de declarar a IU em XML é separar melhor a
apresentação do aplicativo do código que controla seu comportamento. – é possível modificá-la ou adaptá-la sem modificar o código-fonte e
recompilar– é possível criar layouts XML para diferentes orientações de tela, diferentes
tamanhos de tela de dispositivos– Geralmente fornece um preview de como está a organização dos
elementos gráficos na tela
![Page 21: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/21.jpg)
21
• Cada arquivo de layout deve conter exatamente um elemento raiz, que deve ser um objeto View ou ViewGroup. Com o elemento raiz definido, é possível adicionar objetos como elementos filho para construir gradualmente uma hierarquia de View que define o layout.
LinearLayout
TextView Button
Layouts devem ser salvos no diretório res/layout/
![Page 22: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/22.jpg)
22
• Ao compilar o aplicativo, cada arquivo de layout XML é compilado em um recurso View. Deve-se carregar o recurso de layout do código do aplicativo na implementação de retorno de chamada Activity.onCreate(). Para isso, chame setContentView(), passando a referência para o recurso de layout na forma: R.layout.layout_file_name. Por exemplo: se o layout XML for salvo como main_layout.xml, será necessário carregá-lo para a Atividade desta forma:
Carregando o layout/XML
![Page 23: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/23.jpg)
23
Atributos• Cada objeto View e ViewGroup aceita uma variedade própria de
atributos XML. Alguns atributos são específicos de um objeto View (por exemplo, TextView aceita o atributo textSize), mas esses atributos também são herdados de objetos View que possam estender essa classe.
• Id: É um atributo XML comum a todos os objetos View e você o usará com frequência. A sintaxe de um ID, dentro de uma tag XML, é:
• O @ indica que o analisador de XML deve analisar a string para tomar certas ações. Ex.: o @+id, indica que a string my_button deve ser adicionada na lista de recursos (R.java) como um novo identificador.
![Page 24: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/24.jpg)
24
Binding de Views para Variáveis
• Crie uma instância da classe View (ou subclasse) e capture-a do layout usando findViewById:
![Page 25: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/25.jpg)
25
Parâmetros do Layout• layout_something
– Cada ViewGroup contem propriedades que definem seu tamanho e posição, que por sua vez restringem o tamanho e posição de cada View filha• wrap_content: seja do tamanho mínimo necessário para caber o conteúdo• match_parent : seja tão grande quanto sua View “pai” te permitir
![Page 26: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/26.jpg)
26
Layout Position and Size
1. Width2. Height3. Left4. Top
getWidth()getHeight()
getLeft()getTop()
![Page 27: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/27.jpg)
27
Layouts
Útil para layouts simples com uma única View filha (ex.: listView, preencheria todo o espaço). Escala com facilidade para diferentes tamanhos de tela.
Organiza as Views filhas em uma única linha ou coluna. Ela cria um scrollbar caso a quantidade de Views exceda a tela.
Permite especificar a posição de Views em relação a outra Views.
![Page 28: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/28.jpg)
28
Construindo Layouts através de Adaptadores
• Quando o conteúdo do nosso layout é dinâmico podemos usar um layout que é subclasse de AdapterView para que o populemos on-the-go.
ou seja• Um AdapterView é uma view cujos filhos são populadas por
um Adapter.– Sub-classes de AdapterView: ListView, GridView, Spinner e Gallery
![Page 29: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/29.jpg)
29
Adaptadores• As sub-classes de AdapterView usam Adaptadores para fazer a ligação dos
dados com o layout. O Adapter serve como um intermediador entre os dados e o AdapterView. O Adapter detém o conhecimento de como criar os elementos (ex.: listItem, no app Sunshine), então ele o cria e passa ao ListView (quando o ListView requisitar).
![Page 30: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/30.jpg)
30
Populando um AdapterView• É possível popular um AdapterView (ex: ListView, GridView)
através da ligação da instância do AdapterView com o Adapter. O Adapter recupera os dados de uma fonte externa e cria uma View para cada entrada.
• O Android provê várias sub-classes de Adapter que pode ser usada para fazer essa ligação entre os dados e a UI.– ArrayAdapter<T>, BaseAdapter, CursorAdapter,
HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, ThemedSpinnerAdapter, WrapperListAdapter
![Page 31: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/31.jpg)
31
ArrayAdapter• Devemos usar este Adaptador quando a fonte de dados for
um Array. O ArrayAdapter cria uma View para cada elemento do array chamando toString() em cada elemento e colocando-o em um TextView.
mForecastAdapter = new ArrayAdapter<String>( getActivity(), R.layout.list_item_forecast, R.id.list_item_forecast_textview, weekForecast);
ListView listView = (ListView) rootView.findViewById(R.id.listView_forecast);listView.setAdapter(mForecastAdapter);
![Page 32: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/32.jpg)
32
ArrayAdapter
• Android documentation
![Page 33: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/33.jpg)
33
Android Studio Shortcuts• ctrl + shift + a ==> you can look for anything you want• ctrl + n ==> open a file• ctrl + n ==> File:50 ==> open a file on line 50• ctrl + shift + n ==> searches also in xml files• ctrl + d ==> copy and automatically pastes the current line• ctrl + b ==> goes to the parent file of that content• ctrl + p ==> show the list of parameter of that method• ctrl + j ==> shows a lot of quick code snippet such as foreach, try-catch, etc• tools:text ==> in the layout xml files, displays a text in preview mode but not in the deployed app• it is cool for testing purposes• alt + enter ==> shows the tip or error from the idea (lamp) symbol• ctrl + shift + backspace ==> (Navigate | Last Edit Location) brings you back to the last place where you
made changes in the code• ctrl + shift + F7 ==> to quickly highlight usages of some variable in the current file• Use F3 and Shift+F3 keys to navigate through highlighted usages• ctrl + o ==> show methods that can be overriden• ctrl + alt + l ==> formatar o código• shift + f6 ==> refactor
![Page 34: Projeto Avançado de Software II 2 – Revisão da Lição 1 Eduardo de Lucena Falcão](https://reader036.vdocuments.com.br/reader036/viewer/2022081515/570638721a28abb823908335/html5/thumbnails/34.jpg)
34
Avaliação• Mini-testes (aproximadamente 6)
+• Entregáveis:
– Print das telas do app– Código parcial do projeto+
• Projeto final (individual)
• Nota– mini-testes (25%) + entregáveis (25%)– Projeto final (50%)