Android Studio: Relative Layout e Frame Layout, Table Layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity3">
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:layout_alignParentRight="true"
android:layout_toRightOf="@id/usernameLabel"
android:text="Name" />
<TextView
android:id="@+id/usernameLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/username"
android:text="Nome:" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/username"
android:layout_below="@id/username"
android:layout_alignParentRight="true"
android:text="Password"
android:ems="10"
android:inputType="textPassword" />
<TextView
android:id="@+id/passwordLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/password"
android:text="password" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity5">
<LinearLayout
android:id="@+id/bluFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/greenButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:id="@+id/greenFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/bluButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
</FrameLayout>
Una risorsa Layout specifica in modo dichiarativo con TAG XML l’aspetto di un elemento grafico.
Cartella di progetto: res/layout/*xml
Sono file XML che si trovano nella cartella RES. Contiene Risorse, non è codice. Non vengono inglobati. Vengono creati da Android Studio, dei Meta Dati.
Un’Actiity → potrebbe avere diversi Layout (Verticale ed Orizzontale)
Per far riferimento agli oggetti, ci basta chiamare R
R è una Wrapper.
E’ quel Wrapper che ci permette di far riferimento ad oggetti di tipo risorse.
Gestire i cambi di configurazione è bene avere 2 tipi diversi di Layout. Vengono caricati a seconda del diverso cambio di configurazione (Verticale e Orizzontale).
Se ci sono più risorse o più Layout disponibili, O.S. Android sceglie il più adeguato.
Adattare i qualificatori è un gran vantaggio. Caricare i diversi formati è un gran vantaggio.
Alta Risoluzione – Bassa Risoluzione
Inflate: leggere il file XML e poi trasformarlo negli oggetti sull’interfaccia.
Constraint Layout: è quello più semplice. “Hello World”. Posizione gli elementi in un modo flessibile. E’ un ViewGroup. E’ il Layout più semplici. Non mette tanti limiti. Permette tanta libertà.
- posizionamento – margini – posizionamento circolare
- permettere dei criteri di visibilità
Layout: ConstraintLayout e LinearLayout
LinearLayout. Un layout lineare, imposta i figli in una singola riga, orizzontale o verticale, agendo sull’attributo android:layout_orientation
La View è organizzata secondo un Layout Lineare verticale che contiene altri 2.
LinearLayout estende il ViewGroup. Si possono specificare “Gravity” e “Weight”, cioè il peso.
Relative Layout
Le View figlie sono posizione in base al posizionamento tra di Loro e rispetto alla View Genitore.
Table Layout
Le View Figlie sono organizzate in Righe e Colonne.
Avremo una Matrice
FrameLayout
E’ progettato per bloccare un’area sullo schermo e visualizzare un singolo elemento.
Permette di creare dei Frame, delle sequenze.