Please enable JavaScript.
Coggle requires JavaScript to display documents.
Desenvolvimento para dispositivos móveis - Coggle Diagram
Desenvolvimento para dispositivos móveis
7. Navegação entre telas
Definição:
A navegação entre telas no desenvolvimento Android é uma parte crucial para criar uma experiência de usuário fluida e intuitiva. Existem várias maneiras de navegar entre telas (activities e fragments) em um aplicativo Android. A seguir, explico os conceitos, componentes utilizados e como implementar a navegação entre telas.
Principais Conceitos envolvidos
Activity
Representa uma única tela com uma interface do usuário.
Pode iniciar outras activities para criar uma navegação entre diferentes partes do aplicativo.
Fragment
Representa um comportamento ou uma parte da interface do usuário dentro de uma activity.
Facilita a criação de interfaces dinâmicas e responsivas, especialmente em dispositivos maiores.
Intent
Utilizado para iniciar activities e transportar dados entre elas.
Pode ser explícito (especificando o componente exato) ou implícito (especificando uma ação genérica).
Navigation Component
Parte do Android Jetpack, que fornece uma maneira mais estruturada e moderna de implementar navegação.
Utiliza gráficos de navegação (navigation graphs) para definir destinos e ações de navegação.
Componentes Utilizados
Intents
Para iniciar activities e passar dados entre elas.
Fragments
Para modularizar a interface do usuário e gerenciar a navegação dentro de uma única activity.
Navigation Component
Inclui NavController, NavHostFragment e NavGraph para gerenciar a navegação de forma declarativa.
8. Tipos de Layout
Relative Layout
Definição:
O RelativeLayout é um dos layouts mais versáteis e comumente usados no desenvolvimento Android. Ele permite que os desenvolvedores definam a posição dos elementos da interface do usuário em relação uns aos outros ou em relação ao contêiner pai, proporcionando flexibilidade na criação de layouts complexos.
Caracteristicas
Posicionamento Relativo
Permite posicionar um elemento em relação a outro elemento (por exemplo, à direita de, abaixo de) ou em relação às bordas do contêiner pai (por exemplo, alinhado ao topo, centro horizontal).
Uso de IDs
Cada view dentro de um RelativeLayout pode ser identificada por um ID, que é então usado para posicionar outras views em relação a essa view específica.
Flexibilidade:
Suporta uma variedade de combinações de posicionamento, tornando-o ideal para layouts que precisam ser adaptáveis a diferentes tamanhos de tela e orientações.
Layout Aninhado:
É possível aninhar outros layouts dentro de um RelativeLayout para criar estruturas de layout mais complexas.
Atributos Comuns
layout_alignParentTop: Alinha a view ao topo do contêiner pai.
layout_alignParentLeft: Alinha a view à esquerda do contêiner pai.
layout_alignParentRight: Alinha a view à direita do contêiner pai.
layout_centerHorizontal: Centraliza a view horizontalmente no contêiner pai.
layout_toLeftOf: Posiciona a view à esquerda de outra view.
layout_above: Posiciona a view acima de outra view.
Linear Layout
Definição:
O LinearLayout é um dos layouts mais simples e usados frequentemente no desenvolvimento Android. Ele organiza os elementos filhos em uma única direção, seja verticalmente ou horizontalmente. Aqui estão as principais características e como utilizar o LinearLayout.
Principais Características
Orientação
Vertical: Os elementos são dispostos um abaixo do outro.
Horizontal: Os elementos são dispostos lado a lado.
Peso (weight)
Permite distribuir espaço entre os elementos de forma proporcional. O atributo layout_weight define a proporção do espaço que cada elemento deve ocupar.
Atributos de Layout
layout_width e layout_height: Definem a largura e a altura dos elementos filhos.
layout_margin: Define a margem ao redor de cada elemento.
layout_gravity: Define o alinhamento do elemento dentro do seu espaço alocado.
Desvantagens
Desempenho
Pode se tornar ineficiente para layouts complexos com muitos elementos, especialmente se aninhado profundamente.
Layouts aninhados profundos podem resultar em sobrecarga de cálculo de layout, afetando o desempenho.
Limitações de Complexidade
Não é ideal para layouts muito complexos onde os elementos precisam ser posicionados de maneira mais flexível em relação a outros elementos.
9. Persistência com SQLite
Definição
: SQLite é um banco de dados relacional embutido amplamente utilizado no desenvolvimento Android para persistir dados localmente nos dispositivos. Ele oferece uma maneira leve, rápida e eficiente de armazenar e recuperar dados estruturados.
Por indicação da própria Google, para criar um novo banco de dados deve-se utilizar a subclasse SQLiteOpenHelper e modificar seu método onCreate(), a partir do qual é possível executar o comando SQLite que criará as tabelas no banco de dados.
Apesar de ter total suporte no ambiente Android, o banco de dados SQLlite
não é um produto desenvolvido para essa plataforma, tampouco para a Google. E
Operações CRUD
Create (Inserir): Adiciona novos registros à tabela.
Read (Consultar): Recupera dados da tabela.
Update (Atualizar): Modifica registros existentes na tabela.
Delete (Excluir): Remove registros da tabela.
SQL (Structured Query Language)
Linguagem padrão para interagir com bancos de dados relacionais, incluindo SQLite.
Utilizada para executar consultas (queries), atualizações e outras operações de manipulação de dados.
Considerações Importantes
Transações: Use transações para agrupar operações SQL em uma unidade atômica.
Segurança: Utilize parâmetros (selectionArgs) para evitar SQL Injection.
Performance: Índices podem melhorar a performance em consultas frequentes.
Performance: Índices podem melhorar a performance em consultas frequentes.
10. Tipos de layout ConstraintLayout e TableLayout
ConstraintLayout
é um layout poderoso e flexível introduzido pelo Android Studio 2.2, projetado para criar layouts complexos e responsivos de forma eficiente. Ele utiliza restrições para definir a posição e o tamanho dos elementos filhos em relação a outros elementos dentro do mesmo contêiner.
Características Principais
Flexibilidade
Suporta ancoragem (constraints) vertical e horizontalmente, além de alinhamentos relativos.
Permite posicionar e dimensionar elementos de forma dinâmica com base em restrições.
Hierarquia Plana
Promove uma hierarquia de visualização plana, o que geralmente resulta em um desempenho melhor em comparação com layouts aninhados (como LinearLayout aninhado).
Editor Gráfico no Android Studio
Facilita a criação e a edição de layouts complexos por meio de uma interface gráfica intuitiva.
Permite arrastar e soltar elementos e definir suas restrições visualmente.
Desvantagens
Curva de Aprendizado: Pode ter uma curva de aprendizado mais íngreme para desenvolvedores iniciantes.
Complexidade: Para layouts simples, pode ser mais verboso definir restrições em comparação com layouts mais simples como LinearLayout.
Vantagens
Compatibilidade: Totalmente suportado pelo Android Studio e pela plataforma Android.
Suporte Visual: Edição facilitada através do editor gráfico no Android Studio.
Hierarquia Plana: Melhora o desempenho em comparação com layouts aninhados.
Flexibilidade: Ideal para layouts complexos e responsivos.
TableLayout
Definição
: é um layout que organiza os elementos em formato de tabela, com linhas e colunas. Cada linha pode conter múltiplas células (elementos filhos), e as células são organizadas em colunas. Aqui estão suas principais características:
Características Principais
Organização Tabular
Estrutura os elementos em linhas e colunas semelhante a uma tabela HTML.
Cada linha (<TableRow>) contém células (<TextView>, <Button>, etc.).
Uso de android:layout_span e android:layout_column
android:layout_span permite que um elemento ocupe várias colunas.
android:layout_column especifica a coluna em que um elemento deve ser posicionado.
Simplicidade na Definição de Layout
Fácil de entender e utilizar para layouts tabulares simples.
Vantagens
Organização Tabular: Ideal para exibir dados em formato de tabela.
Simplicidade: Fácil de entender e usar para layouts tabulares simples.
Compatibilidade: Suportado por versões antigas do Android e ferramentas de desenvolvimento.
Desvantagens
Limitações em Layouts Complexos: Difícil de usar para layouts que exigem posicionamento flexível e dinâmico de elementos.
Não Suporta Hierarquia de Visualização Plana: Pode resultar em desempenho inferior quando usado com muitas células aninhadas.
11. Webservices RESTful
Conceito
é uma abordagem arquitetural para a implementação de serviços web que usa os princípios do estilo arquitetural REST (Representational State Transfer). Aqui está um overview detalhado sobre Web Services RESTful, incluindo seus princípios, características técnicas, protocolo utilizado, e uma comparação com o SOAP:
Principios REST
1. Arquitetura Cliente-Servidor:
Separar as preocupações do cliente e do servidor, permitindo que eles evoluam independentemente.
2. Estado Representacional:
As operações são baseadas na representação do estado atual do recurso, transmitida ao cliente.
3. Interface Uniforme:
Uso de recursos identificados por URIs, operações bem definidas (GET, POST, PUT, DELETE), e representação dos recursos (geralmente em JSON ou XML).
5. Sistema Sem Estado (Stateless):
Cada requisição do cliente para o servidor deve conter toda a informação necessária para compreender a requisição (como tokens de autenticação, por exemplo).
4. Uso de Cache:
Respostas devem indicar se podem ou não ser armazenadas em cache pelo cliente.
Caracteristicas Técnicoas
Formatos de dados: REST permite uma variedade maior de formatos de dados, incluindo JSON, enquanto o SOAP se limita ao XML.
Simplicidade: REST é geralmente mais fácil de trabalhar, especialmente com JSON.
Desempenho: REST é mais rápido e usa menos largura de banda.
Integração: REST é mais adequado para integração com sites existentes.
Protocolo
HTTP/HTTPS.
12. Alertas e Classes Toast
Definição:
O Toast fornece um feedback simples e rápido ao usuário em uma pequena janela. Essa janela é exibida na quantidade de espaço necessário para a mensagem determinada, permanecendo visível por um tempo limite.
O uso básico do Toast envolve poucas linhas de código
Por padrão, o Toast é exibido no canto inferior da tela, centralizado horizontalmente. Você pode personalizar a posição usando o método setGravity().
Toast customizado
Um Toast customizado usa um layout definido por XML ou código. Ele aceita uma View como parâmetro, permitindo layouts personalizados.
Alertas
Alertas são mais interativos e permitem ações do usuário (como botões “OK” ou “Cancelar”)
Para criar alertas, você pode usar a classe AlertDialog.