Layout e Estrutura do Projeto no Android Studio

Este texto-base aborda os seguintes temas. Clique para navegar.
Este texto-base aborda os seguintes temas. Clique para navegar.
O layout de uma aplicação é algo muito importante, é ele o responsável pela não satisfação do usuário com um determinado aplicativo. Não adianta o aplicativo conter as melhores codificações e desempenho, se o usuário não aprovar o seu layout e usabilidade.
O Constraintlayout foi desenvolvido para melhorar a experiência do desenvolvedor durante o processo de criação de uma Activity (tela da aplicação). Ele necessita que sua criação seja fielmente apresentada nas telas dos mais diferentes dispositivos, assim como foi desenvolvida no Android Studio.
E isso não estava ocorrendo com padrões de desenvolvimento de interface anteriores, por exemplo, com o LinearLayout.
O Android Studio sofreu algumas remodelações em seu “Editor de Layout” para que o desenvolvedor utilize o padrão ConstraintLayout, e não pense que isso tornou o processo de construção mais difícil e demorado! Aconteceu exatamente o inverso, o processo de desenvolvimento de interface ficou mais simples e menos complexo.
Para trabalhar com o ConstraintLayout é necessário compreender como ele funciona. Constraint significa “limitação”, desta forma, vamos imaginar que em um determinado componente na tela, este padrão oferece uma limitação para que esse componente seja “amarrado” em uma determinada posição da Activity (tela).
A figura a seguir, mostra um componente ImageView em uma Activity. O componente recebeu a Constraint esquerda e direita, gerando a sua amarração na tela, ou seja, o componente é fielmente exibido neste ponto, independentemente do tamanho e posição da tela do celular durante a execução do aplicativo pelo usuário.
Quando um componente é arrastado para a tela, ele fica na posição escolhida pelo desenvolvedor, só que, mesmo assim, é necessário criar suas “amarrações”. Caso o desenvolvedor não efetue esse processo, todos os componentes são mostrados na posição superior esquerda da tela, ficando impossível sua utilização.
É necessário que todo componente arrastado para a Activity, tenha pelo menos uma Constraint definindo sua posição horizontal e uma Constraint definindo sua posição vertical.
Após o desenvolvimento do projeto “Aula01” no Android Studio liste em sua guia “Project” todos os arquivos necessários para execução do aplicativo.
É importante observar e compreender a função de cada pacote e arquivo encontrado na pasta “app”, vamos utilizar esses pacotes para criar no futuro nossas Activitys adicionais do projeto.
Manifests
Na pasta “Manifests” encontramos o arquivo “AndroidManifests.xml” responsável pelas configurações essenciais do aplicativo. É nele que encontramos as permissões necessárias, para que o aplicativo funcione em um determinado dispositivo e as Activitys presentes no projeto.
O arquivo Manifests é encontrado em todos os aplicativos para dispositivos Android. Ele é fundamental para a instalação do aplicativo e, posteriormente, para sua execução.
Para a sua perfeita execução, o arquivo fica localizado na pasta raiz do sistema e leva o nome de “AndroidManifests.xml”.
A figura a seguir mostra as principais áreas de atuação do arquivo, fundamentando sua importância. A imagem foi retirada do site oficial do Android Studio e está disponível para consulta de outras informações referentes ao arquivo “AndroidManifests.xml” através do link:
Nomear o pacote Java para o aplicativo. O nome do pacote serve como identificador exclusivo para o aplicativo.
Descrever os componentes do aplicativo, que abrangem atividades, serviços, receptores de transmissão e provedores de conteúdo que compõem o aplicativo. Ele também nomeia a classe que implementa cada um dos componentes e publica suas capacidades, como as mensagens Intent que podem lidar. Essas declarações informam ao sistema Android os componenetes e as condições em que eles podem ser inicializados.
Determinar os processos que hospedam os componentes de aplicativo.
Declarar as permissões que o aplicativo deve ter par acessar partes protegidas da API e interagir com outros aplicativos. Ele também declara as permissões que outros devem ter para interagir com os componentes do aplicativo.
Listar as classes Instrumentation que fornecem geração de perfil e outras informações durante a execução do aplicativo. Essas declarações estão presentes no manifesto somente enquanto o aplicativo está em desenvolvimento e são removidas antes das publicação do aplicativo.
Declarar o nível mínimo da Android API que o aplicativo exige.
Listar as bibliotecas às quais o aplicativo deve se vincular.
O arquivo conta com uma estrutura padrão no formato XML, na qual é feita a inserção e alteração das marcações (comandos). No código a seguir, encontramos o arquivo do nosso projeto, vamos destacar algumas informações importantes e, no decorrer do curso, vamos apresentando outras funções.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.aula01">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Package – Identifica o local dos arquivos Java da aplicação.
Application – Configuração dos conteúdos da aplicação, como ícones, títulos, estilos, entre outros recursos.
Activity – Declaração de todas as Activitys utilizadas no aplicativo.
O Android Studio trabalha com alguns padrões de programação, entre eles o JUnit que, basicamente, é uma ferramenta para auxiliar as equipes de desenvolvimento nos testes com o programa ou aplicativo.
Na pasta Java, encontramos dois pacotes utilizados para os processos de programação, conforme figura 4, os pacotes são “androidTest” e “test”.
No decorrer do desenvolvimento do projeto, o pacote que vamos utilizar é o primeiro. É nele que encontramos todas as classes Javas, que levam a codificação das nossas Activitys.
A pasta res é um conjunto de subpastas, em que encontramos os recursos do projeto. Quando incluímos imagens, ícones, entre outros efeitos visuais, são nas dependências da pasta res que esses arquivos são inseridos.
O quadro abaixo, retirado do site oficial do Android Studio, apresenta e explica todas os componentes da pasta “res”.
Diretório | Tipo de Recurso |
---|---|
animator/ | |
anim/ |
Arquivos XML que definem as animações intermediárias. (As animações de propriedade também podem ser salvas neste diretório, mas o diretório animator/ é o preferencial para animações de propriedade para distinguir os dois tipos. |
color/ |
Arquivos XML que definem uma lista de estado de cores. Consulte Recurso de lista de estado de cores. |
drawable/ |
Os arquivos Bitmap (png, .9 .png, .jpg, .gif) ou arquivos XML são compilados nos seguintes subtipos de recurso drawable:
|
mipmap/ |
Arquivos drawable para diferentes densidades do ícone do inicializador. Para obter mais informações sobre o gerenciamento de ícones do inicializador com pastas mipmap/, consulte Visão geral do gerenciamento de projetos. |
layout/ |
Arquivos XML que definem um layout de interface do usuário. Consulte Recurso de layout. |
menu/ |
Arquivos XML que definem os menus do aplicativo, como menu de opções, de menu de contexto ou submenu. Consulte Recurso de menu. |
raw/ |
Arquivos arbitrários para salvar na forma bruta. Para abrir esses recursos com InputStream bruto, chame Resources.openRawResource() com o código do recurso, que é R.raw.filename. No entanto, se precisar de acesso aos nomes e à hierarquia dos arquivos originais, considere salvar alguns recursos no diretório assets/ em vez de res/raw/. Os arquivos em assets/ não recebem um código de recurso, portanto é possível lê-los usando apenas o AssetManager. |
values/ |
Arquivos XML que contêm valores simples, como strings, números inteiros e cores. Enquanto os arquivos de recurso XML estiverem em outros subdiretórios res/, defina um único recurso com base no arquivo XML, os arquivos no diretório values/ descrevem vários recursos. Para cada arquivo neste diretório, cada filho do elemento <resources> define um único recurso. Por exemplo: um elemento <string> cria um recurso R.string e um elemento <color> cria um recurso R.color.
Consulte Recursos de string, Recurso de estilo e Mais tipos de recursos. |
xml/ |
Arquivos arbitrários XML que podem ser lidos em tempo de execução chamando Resources.getXML(). Vários arquivos de configuração XML devem ser salvos aqui, como uma configuação buscável. |
Para maiores informações e explicações sobre o conteúdo do pacote “res”, o site oficial do Android Studio disponibiliza um ótimo artigo, disponível no site: