Slide 1

Slide 1 text

Android Aula 9 1

Slide 2

Slide 2 text

Objectivos • Google Play • Arquitectura Android • Android Studio • Estrutura de pastas • Deploy • Layouts (Views e Viewgroups) • Exercícios 2

Slide 3

Slide 3 text

Android Studio https://developer.android.com/sdk/index.html
 https://www.genymotion.com (opcional)

Slide 4

Slide 4 text

Bibliografia recomendada • Professional Android 4 Application Development, wrox • Reto Meier

Slide 5

Slide 5 text

Google Play Estatísticas: https://developer.android.com/about/dashboards/index.html Aplicação: https://play.google.com/store/apps/details?id=com.box.android 5

Slide 6

Slide 6 text

4 Componentes base • Activity 6

Slide 7

Slide 7 text

4 Componentes base • Activity • Service 7

Slide 8

Slide 8 text

4 Componentes base • Activity • Service • Broadcast Receiver 8

Slide 9

Slide 9 text

4 Componentes base • Activity • Service • Broadcast Receiver • Content Provider 9

Slide 10

Slide 10 text

Processo Desenvolvimento • Código fonte (java) + recursos (imagens,sons,layouts); • Compila-se os ficheiros e gera-se um binário .apk; • Instala-se no dispositivo; • Inicia-se a aplicação. 10

Slide 11

Slide 11 text

Arquitectura Android 11

Slide 12

Slide 12 text

Demonstração • Criação de um projecto • Estrutura de pastas • Desenvolvimento Visual • Desenvolvimento Comportamental • Layouts 12

Slide 13

Slide 13 text

Desenvolvimento Visual

Slide 14

Slide 14 text

View Representa o bloco mínimo necessário de uma User Interface. É a classe base de todos os componentes visuais de uma aplicação. 14

Slide 15

Slide 15 text

UML Classes View 15

Slide 16

Slide 16 text

Exemplos de Views • TextView - Label de texto • EditText - Caixa de texto editável • Button - Botão • ImageView - Imagem 16

Slide 17

Slide 17 text

ViewGroup Um ViewGroup é uma view especial que pode conter outras views (chamadas de filhas). Um ViewGroup é a classe base de todos os layouts e contentores de views. 17

Slide 18

Slide 18 text

UML Classes ViewGroup 18

Slide 19

Slide 19 text

Exemplos de ViewGroups • LinearLayout - Dispõe os filhos de uma forma linear horizontal ou vertical • FrameLayout - Permite a sobreposição de vários dos seus filhos; • RelativeLayout - Layout em que os seus filhos se dispõe relativamente à posição entre si ou ao seu pai. 
 
 
 
 
 
 Na criação de um layout, é boa prática adicionar o menor número possível de níveis na hierarquia de views por forma a optimizar o desempenho e o desenho. 19

Slide 20

Slide 20 text

Layout Um layout define a estrutura visual para a user interface, tal como uma activity ou um widget. É possível declarar um layout de duas formas: • XML • Instanciação de elementos em tempo de execução (java) Declarar a UI em XML permite uma melhor separação da camada de apresentação (UI) do código da aplicação que controla o seu comportamento. 20

Slide 21

Slide 21 text

Organização Layout 21

Slide 22

Slide 22 text

Layout 
 
 
 
 
 22

Slide 23

Slide 23 text

Associar o recurso XML public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 TextView mText = (TextView) findViewById(R.id.text_hello);
 mText.setText("exemplo");
 }
 } 23

Slide 24

Slide 24 text

Associar o recurso XML public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 TextView mText = (TextView) findViewById(R.id.text_hello);
 mText.setText("exemplo");
 }
 } 24

Slide 25

Slide 25 text

Associar uma view 
 
 
 
 
 25

Slide 26

Slide 26 text

Associar uma view public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 TextView mText = (TextView) findViewById(R.id.text_hello);
 mText.setText("exemplo");
 }
 } 26

Slide 27

Slide 27 text

Propriedades XML Cada View em android tem como propriedades mínimas obrigatórias as seguintes: ● android:layout_width = “wrap_content” ou “match_parent” ou medida ● android:layout_height = “wrap_content” ou “match_parent” ou medida match_parent indica que a view é do tamanho do seu “pai”.
 wrap_content indica que a view contém apenas o tamanho necessário para mostrar todo o seu conteúdo. 27

Slide 28

Slide 28 text

Medidas Como unidade de medida para views, utiliza-se dp (density independent pixel) para o tamanho das views e sp (scale independent pixel) para o tamanho do texto, isto é, a propriedade textSize. A medida px está descontinuada! 28

Slide 29

Slide 29 text

Demonstração

Slide 30

Slide 30 text

ViewGroups

Slide 31

Slide 31 text

LinearLayout LinearLayout é um viewgroup que alinha os seus “filhos” numa única coluna ou linha através da propriedade orientation. android:orientation = horizontal ou vertical É possível também dividir a sua largura ou altura de forma equitativa entre os seus “filhos” através da utilização da propriedade: android:weightSum = [valor] O valor atribuído no weightSum, tem depois de ser dividido por todos os seus “filhos” na propriedade android:layout_weight 31

Slide 32

Slide 32 text

LinearLayout 32

Slide 33

Slide 33 text

RelativeLayout Layout em que os seus “filhos” se dispõe relativamente à posição entre si ou ao seu pai. É possivel atribuir a posição de um “filho” relativamente ao topo do “pai”: android:layout_alignParentTop = true ou false É também possível colocar uma view à direita ou esquerda de outro: android:layout_toRightOf = “@+id/{idView}” e da mesma forma é possível também colocar em baixo ou em cima: android:layout_below = “@+id/{idView}” 33

Slide 34

Slide 34 text

RelativeLayout 34

Slide 35

Slide 35 text

FrameLayout Layout desenhado para ocupar uma área do ecrã para dispor um único item. Geralmente é utilizado para manter apenas um “filho” porque pode ser difícil manipular os “filhos” sem a sua sobreposição. No entanto, esta sobreposição é também uma das razões porque se utiliza framelayouts. É possível manipular a posição de cada filho a partir da propriedade android:layout_gravity = top,bottom,left,right,center,center_vertical, etc. 35

Slide 36

Slide 36 text

FrameLayout 36

Slide 37

Slide 37 text

Propriedades em Child Views 37

Slide 38

Slide 38 text

Exercício 1 Desenhe o layout da figura à direita num ficheiro xml na pasta layouts. Note que: • Os botões do fundo estão distribuídos 
 equitativamente; • A editText está centrada no ecrã 
 (tanto a nível horizontal como vertical) • A textView laranja está alinhada à esquerda, a vermelha à direita e a roxa centrada entre as duas últimas com a mesma altura. 38

Slide 39

Slide 39 text

Bibliografia • http://developer.android.com/guide/topics/ui/overview.html • http://developer.android.com/guide/topics/resources/string- resource.html • http://developer.android.com/guide/topics/ui/declaring- layout.html 39