Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android - Aula 9

Android - Aula 9

Aula 9 de Desenvolvimento de aplicações para android leccionada na FLAG.

Filipe Mendes

October 19, 2015
Tweet

More Decks by Filipe Mendes

Other Decks in Education

Transcript

  1. Objectivos • Google Play • Arquitectura Android • Android Studio

    • Estrutura de pastas • Deploy • Layouts (Views e Viewgroups) • Exercícios 2
  2. 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
  3. Demonstração • Criação de um projecto • Estrutura de pastas

    • Desenvolvimento Visual • Desenvolvimento Comportamental • Layouts 12
  4. 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
  5. Exemplos de Views • TextView - Label de texto •

    EditText - Caixa de texto editável • Button - Botão • ImageView - Imagem 16
  6. 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
  7. 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
  8. 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
  9. Layout <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 
 <TextView


    android:id="@+id/text_hello"
 android:text="Hello World!"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 </RelativeLayout>
 22
  10. 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
  11. 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
  12. Associar uma view <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">


    
 <TextView
 android:id="@+id/text_hello"
 android:text="Hello World!"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 </RelativeLayout>
 25
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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