A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto Avançado de Software II

Apresentações semelhantes


Apresentação em tema: "Projeto Avançado de Software II"— Transcrição da apresentação:

1 Projeto Avançado de Software II
2 – Revisão da Lição 1 Aula recomendada para os alunos que assistiram e fizeram as atividades da Lição 1 do curso da Udacity. Eduardo de Lucena Falcão

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 AVD – android virtual device

3 The Android Platform Android Software Stack
Android operating system is a stack of software components which is roughly divided into five sections and four main layers as shown below in the architecture diagram. SDK – software developers kit Android Software Stack

4 Linux kernel A base de toda a arquitetura do Android.
Responsabilidades: Responsável por tarefas de baixo nível relacionadas ao Sistema Operacional: gerenciamento de memória; gerenciamento de processos; operações em arquivos; comunicação através da rede. Específicas do Android: gerenciamento de energia; gerenciamento de memória (low memory killer) comunicação inter-processos gerenciamento dos drivers do dispositivo móvel: câmera, display, wi-fi, audio, etc.

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.

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. Webkit: renderizar páginas web Graphics – surface manager: renderização da tela Media framework: reprodução de áudio e vídeo OpenGL: renderização de gráficos de alta performance (3D) SQLite: gerenciamento de bancos de dados relacionais

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)

8 Aplicativos Android executam em uma JVM padrão?
Sim; Não.

9 Application Framework
Conjunto de componentes reutilizáveis que a maioria da aplicações Android utilizam para executar. Activity Manager: controla todos os aspectos do ciclo de vida de uma aplicação, além da pilha de navegação; Content Providers: permite aplicações compartilhar dados entre si; Resource manager: recursos não compiláveis do app - strings, graphics e arquivos de layout Notification Manager: permite apps exibir notificações e alertas para o usuário; Location manager: dá acesso à serviços de localização, permitindo um app receber atualizações de mudança de localização. Exemplo de content provider é a lista de contatos.

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.

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.

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.

13 Application Camada em que rodamos nossas aplicações e as aplicações padrão.  Standard apps: Home- tela principal; Contacts – banco de dados dos contatos Phone – app para efetuar ligações Browser Nossas apps  Exemplo de content provider é a lista de contatos.

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 Se o valor de minSdkVersion não é declarado, o usado é 1. MAS, o Gradle sobrescreve o valores do manifest

15 Processo de build

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

17 Interface Elements Drag and Dropping TextView ImageView ListView

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.

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.

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

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/

22 Carregando o layout/XML
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:

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, é: indica que o analisador de XML deve analisar a string para tomar certas ações. Ex.: indica que a string my_button deve ser adicionada na lista de recursos (R.java) como um novo identificador.

24 Binding de Views para Variáveis
Crie uma instância da classe View (ou subclasse) e capture-a do layout usando findViewById:

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

26 Layout Position and Size
getWidth() getHeight() getLeft() getTop() Width Height Left Top

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.

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 Spinner allows you to select an item from a drop down menu Android GridView shows items in two-dimensional scrolling grid (rows & columns) and the grid items are not necessarily predetermined but they automatically inserted to the layout using a ListAdapter

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

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

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

32 ArrayAdapter Android documentation

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

34 Avaliação Mini-testes (aproximadamente 6) Entregáveis:
+ 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%)


Carregar ppt "Projeto Avançado de Software II"

Apresentações semelhantes


Anúncios Google