SlideShare a Scribd company logo
1 of 23
Download to read offline
ITIS Max Planck di Lancenigo diVillorba (TV)
A.S. 2013-2014
Prof. PAOLOTOSATO
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Programmazione mobile: ANDROID
Seconda lezione: attività e layout
23/04/2014 2
• Le attività
• Layout
• In Java
• InXML
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Indice
23/04/2014 3
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Componenti di un’applicazione Android che
fanno uso del display e che
interagiscono con l’utente (~ finestra).
Classe che estende android.app.Activity.
Hanno carattere di esclusività: soltanto
un’attività alla volta può occupare il
display.
La distruzione delle attività è
completamente demandata al sistema:
si possono ibernare ma non chiudere.
23/04/2014 4
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Metodi di Activity eseguiti durante i passaggi di stato di un’attività
package esempi.ciaomondo;
import android.util.Log;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// …
}
protected void onRestart() {
super.onRestart();
Log.i("Activity", "Richiamato onRestart()");
}
protected void onStart() {
super.onStart();
Log.i("Activity", "Richiamato onStart()");
}
protected void onResume() {
super.onResume();
Log.i("Activity", "Richiamato onResume()");
}
protected void onPause() {
super.onPause();
Log.i("Activity", "Richiamato onPause()");
}
protected void onStop() {
super.onStop();
Log.i("Activity", "Richiamato onStop()");
}
protected void onDestroy() {
super.onDestroy();
Log.i("Activity", "Richiamato onDestroy()");
}
}
23/04/2014 5
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Esempio sotto-attività: attività principale
public class MainActivity extends Activity implementsOnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("Lancia Sotto-attività");
button.setOnClickListener(this);
setContentView(button);
}
public void onClick(View v) {
Intent intent = new Intent(this, SubActivity.class);
startActivity(intent);
}
}
23/04/2014 6
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Esempio sotto-attività: attività secondaria
public class SubActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("TerminaSotto-attività");
button.setOnClickListener(this);
setContentView(button);
}
public void onClick(View v) {
finish();
}
}
23/04/2014 7
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Esempio sotto-attività: descrittore dell’applicazione (AndroidManifest.xml)
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="esempi.ciaomondo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SubActivity"
android:label="@string/app_name" />
</application>
Intent: descrizione di
un’operazione che deve
essere eseguita.
Le attività, attraverso un
intent-filter, possono
essere attivate in risposta
ad uno specifico evento.
Gli intent-filter accettano
figli di tre tipi: action,
category, data.
23/04/2014 8
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Valore di ritorno di una sotto-attività: attività principale
public class MainActivity extends Activity implementsOnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("Lancia Sotto-attività");
button.setOnClickListener(this);
setContentView(button);
}
public void onClick(View v) {
Intent intent = new Intent(this, SubActivity.class);
// Il secondo parametro è un intero che rappresenta
// il codice della richiesta
startActivityForResult(intent, 10);
}
Le attività
23/04/2014 9
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Valore di ritorno di una sotto-attività: attività principale
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 10) {
if (resultCode == 0) {
Log.i("Sotto-attività","Interruzioneprima di setResult");
} else if (resultCode == 1) {
Log.i("Sotto-attività","Risultato ottenuto correttamente");
Log.i("Sotto-attività","Messaggio: " + data.getStringExtra("messaggio"));
Log.i("Sotto-attività","Cliccato: " + data.getBooleanExtra("cliccato", false));
SimpleDateFormat f = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.ITALY);
Date d = new Date(data.getLongExtra("timestamp", 0));
Log.i("Sotto-attività","Timestamp: " + f.format(d));
}
}
}
}
23/04/2014 10
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Valore di ritorno di una sotto-attività: attività secondaria
public class SubActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("TerminaSotto-attività");
button.setOnClickListener(this);
setContentView(button);
}
23/04/2014 11
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Le attività
Valore di ritorno di una sotto-attività: attività secondaria
public void onClick(View v) {
Intent data = new Intent();
data.putExtra("messaggio", "Tutto ok!");
data.putExtra("cliccato", true);
data.putExtra("timestamp", System.currentTimeMillis());
// Il primo parametro è un intero che rappresenta
// l'identificativo del risultato (0 se non viene chiamato setResult).
// Il secondo parametro può mancare ed è un Intent, il quale
// contiene un dizionario chiave-valore (null se assente).
setResult(1, data);
finish();
}
}
23/04/2014 12
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Layout - Java
I componenti View estendono tutti la classe base
android.view.View.
Per mostrare sullo schermo l’oggetto View specificato:
setContentView(View view).
Tutti i widget richiedono, nei loro costruttori, un oggetto
che estenda la classe astratta android.content.Context
(Activity estende indirettamente Context).
Pacchetto android.widget
• TextView - setText()
• EditText - getText()
• Button - setText()
• ImageView - setImageResource()
• ImageButton -
setImageResource()
• CheckBox - setText()
• RadioButton/RadioGroup
• ToggleButton (on/off)
• DatePicker - getDayOfMonth(),
getMonth(), getYear().
• TimePicker - getCurrentHour(),
getCurrentMinute().
• AnalogClock/DigitalClock
Layout - Java
23/04/2014 13
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Layout: ViewGroup utilizzabili per posizionare i widget sullo schermo
Pacchetto android.widget
• FrameLayout: allinea il widget in alto a sinistra e lo estende per tutta la dimensione
disponibile al layout stesso.
• RelativeLayout: per default, il componente aggiunto viene allineato in alto a sinistra
(dimensioni reali). E' possibile controllare l’allineamento attraverso setGravity().
• LinearLayout: il suo orientamento può essere stabilito chiamando il metodo
setOrientation(), con argomento pari a LinearLayout.HORIZONTAL o
LinearLayout.VERTICAL.Se si va di poco oltre la dimensione della riga, il sistema tenta
un aggiustamento restringendo i componenti al di sotto delle loro dimensioni ideali.
• TableLayout: permette di sistemare i componenti secondo uno schema a tabella. I
TableLayout vanno costruiti aggiungendo al loro interno degli oggetti TableRow.
Layout - Java
23/04/2014 14
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
TextView label1 = newTextView(this);
label1.setText("Nome:");
EditText edit1 = new EditText(this);
TextView label2 = new TextView(this);
label2.setText("Cognome:");
EditText edit2 = new EditText(this);
TextView label3 = newTextView(this);
label3.setText("Sesso:");
RadioButtonradio1 = new RadioButton(this);
radio1.setText("M");
RadioButtonradio2 = new RadioButton(this);
radio2.setText("F");
RadioGroup radioGroup1 = new RadioGroup(this);
radioGroup1.setOrientation(LinearLayout.HORIZONTAL);
radioGroup1.setGravity(Gravity.CENTER);
radioGroup1.addView(radio1);
radioGroup1.addView(radio2);
radioGroup1.check(radio1.getId());
Layout - Java
23/04/2014 15
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Button button1 = new Button(this);
button1.setText("Salva");
Button button2 = new Button(this);
button2.setText("Annulla");
TableRow row1 = newTableRow(this);
row1.setGravity(Gravity.CENTER);
row1.addView(label1);
row1.addView(edit1);
TableRow row2 = newTableRow(this);
row2.setGravity(Gravity.CENTER);
row2.addView(label2);
row2.addView(edit2);
TableRow row3 = newTableRow(this);
row3.setGravity(Gravity.CENTER);
row3.addView(label3);
row3.addView(radioGroup1);
Layout - Java
23/04/2014 16
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
TableLayout tableLayout = newTableLayout(this);
tableLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
tableLayout.addView(row1);
tableLayout.addView(row2);
tableLayout.addView(row3);
tableLayout.setColumnShrinkable(0, true);
tableLayout.setColumnStretchable(1, true);
LinearLayout linearLayout1 = new LinearLayout(this);
linearLayout1.setGravity(Gravity.CENTER);
linearLayout1.setOrientation(LinearLayout.HORIZONTAL);
linearLayout1.addView(button1);
linearLayout1.addView(button2);
LinearLayout linearLayout2 = new LinearLayout(this);
linearLayout2.setGravity(Gravity.CENTER);
linearLayout2.setOrientation(LinearLayout.VERTICAL);
linearLayout2.setPadding(5, 5, 5, 5);
linearLayout2.addView(tableLayout);
linearLayout2.addView(linearLayout1);
setContentView(linearLayout2);
Layout - XML
23/04/2014 17
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Editor basato su XML
res/layout contiene le descrizioni dei layout e dei widget che saranno
poi usati in una o più attività dell’applicazione.
Per richiamare un layout XML: setContentView(R.layout.main);
Layout - XML
23/04/2014 18
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Layout - XML
23/04/2014 19
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/
android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="5dp" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top|center_horizontal"
android:shrinkColumns="0"
android:stretchColumns="1" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal|center_vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="fill_horizontal|center_vertical"
android:text="Nome" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<requestFocus />
</EditText>
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal|center_vertical" >
Layout - XML
23/04/2014 20
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="fill_horizontal|center_vertical"
android:text="Cognome" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="fill_horizontal|center_vertical" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="fill_horizontal|center_vertical"
android:text="Sesso" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkedButton="0"
android:gravity="center"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="M" />
23/04/2014 21
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
Layout - XML
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F" />
</RadioGroup>
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Salva" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Annulla" />
</LinearLayout>
</LinearLayout>
Layout - XML
23/04/2014 22
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
A ogni componente nel file XML è possibile assegnare un ID
@+nomeGruppo/nomeId
In Java è possibile richiamare il componente e modificarlo
R.nomeGruppo.nomeId
Esempio:
Button button = (Button) findViewById(R.id.button2);
Attributi obbligatori: layout_width e layout_height
• wrap_content: rende il componente grande tanto quanto impongono i suoi
sotto-componenti.
• match_parent: allarga il componente fino a fargli occupare tutto lo spazio
concessogli dal suo contenitore d’ordine superiore.
23/04/2014 23
Quest' opera è distribuita con
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
To be continued …

More Related Content

Similar to Programmazione mobile: ANDROID

Intercettare gli eventi di mouse e tastiera
Intercettare gli eventi di mouse e tastieraIntercettare gli eventi di mouse e tastiera
Intercettare gli eventi di mouse e tastieraFederico Paparoni
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerMatteo Magni
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
 
MOBILE APPS con ANDROID - Lo Stretto Digitale
MOBILE APPS con ANDROID  - Lo Stretto DigitaleMOBILE APPS con ANDROID  - Lo Stretto Digitale
MOBILE APPS con ANDROID - Lo Stretto Digitalelostrettodigitale
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio JavaPaolo Tosato
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQueryXeDotNet
 
Panoramica su Dagger2 per Android
Panoramica su Dagger2 per AndroidPanoramica su Dagger2 per Android
Panoramica su Dagger2 per AndroidBoris D'Amato
 
Deep multitasking in Windows Phone Codename "Mango"
Deep multitasking in Windows Phone Codename "Mango"Deep multitasking in Windows Phone Codename "Mango"
Deep multitasking in Windows Phone Codename "Mango"Matteo Pagani
 
Notification services su android
Notification services su androidNotification services su android
Notification services su androidasterixms
 
Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv Codemotion
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerMatteo Magni
 
Qt Lezione4 Parte2: creare un custom widget plugin per Qt Designer
Qt Lezione4 Parte2: creare un custom widget plugin per Qt DesignerQt Lezione4 Parte2: creare un custom widget plugin per Qt Designer
Qt Lezione4 Parte2: creare un custom widget plugin per Qt DesignerPaolo Sereno
 

Similar to Programmazione mobile: ANDROID (20)

Xamarin.android
Xamarin.androidXamarin.android
Xamarin.android
 
Activity intent
Activity intentActivity intent
Activity intent
 
Intercettare gli eventi di mouse e tastiera
Intercettare gli eventi di mouse e tastieraIntercettare gli eventi di mouse e tastiera
Intercettare gli eventi di mouse e tastiera
 
Ivano brogonzoli why_mca
Ivano brogonzoli why_mcaIvano brogonzoli why_mca
Ivano brogonzoli why_mca
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesigner
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immagini
 
MOBILE APPS con ANDROID - Lo Stretto Digitale
MOBILE APPS con ANDROID  - Lo Stretto DigitaleMOBILE APPS con ANDROID  - Lo Stretto Digitale
MOBILE APPS con ANDROID - Lo Stretto Digitale
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
Java lezione 11
Java lezione 11Java lezione 11
Java lezione 11
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio Java
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 
Panoramica su Dagger2 per Android
Panoramica su Dagger2 per AndroidPanoramica su Dagger2 per Android
Panoramica su Dagger2 per Android
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
Deep multitasking in Windows Phone Codename "Mango"
Deep multitasking in Windows Phone Codename "Mango"Deep multitasking in Windows Phone Codename "Mango"
Deep multitasking in Windows Phone Codename "Mango"
 
Notification services su android
Notification services su androidNotification services su android
Notification services su android
 
Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv Sviluppo e deployment cross-platform: Dal mobile alla Tv
Sviluppo e deployment cross-platform: Dal mobile alla Tv
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesigner
 
Qt Lezione4 Parte2: creare un custom widget plugin per Qt Designer
Qt Lezione4 Parte2: creare un custom widget plugin per Qt DesignerQt Lezione4 Parte2: creare un custom widget plugin per Qt Designer
Qt Lezione4 Parte2: creare un custom widget plugin per Qt Designer
 

More from Paolo Tosato

Esperienze di robotica creativa - Rospino
Esperienze di robotica creativa - RospinoEsperienze di robotica creativa - Rospino
Esperienze di robotica creativa - RospinoPaolo Tosato
 
Open Educational Resources and Professional Teaching
Open Educational Resources and Professional TeachingOpen Educational Resources and Professional Teaching
Open Educational Resources and Professional TeachingPaolo Tosato
 
Educational Robotics and Social Inclusion
Educational Robotics and Social InclusionEducational Robotics and Social Inclusion
Educational Robotics and Social InclusionPaolo Tosato
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio JavaPaolo Tosato
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio JavaPaolo Tosato
 
User Generated Content: a new way to mix the role of teacher and student
User Generated Content:a new way to mix the role of teacher and studentUser Generated Content:a new way to mix the role of teacher and student
User Generated Content: a new way to mix the role of teacher and studentPaolo Tosato
 

More from Paolo Tosato (6)

Esperienze di robotica creativa - Rospino
Esperienze di robotica creativa - RospinoEsperienze di robotica creativa - Rospino
Esperienze di robotica creativa - Rospino
 
Open Educational Resources and Professional Teaching
Open Educational Resources and Professional TeachingOpen Educational Resources and Professional Teaching
Open Educational Resources and Professional Teaching
 
Educational Robotics and Social Inclusion
Educational Robotics and Social InclusionEducational Robotics and Social Inclusion
Educational Robotics and Social Inclusion
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio Java
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio Java
 
User Generated Content: a new way to mix the role of teacher and student
User Generated Content:a new way to mix the role of teacher and studentUser Generated Content:a new way to mix the role of teacher and student
User Generated Content: a new way to mix the role of teacher and student
 

Recently uploaded

magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxpalestiniaurora
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxsasaselvatico
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxpalestiniaurora
 
Piccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxPiccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxpalestiniaurora
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxteccarellilorenzo
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPDamiano Orru
 
presentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptxpresentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptxmichelacaporale12345
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxteccarellilorenzo
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfteccarellilorenzo
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxpalestiniaurora
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxpalestiniaurora
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda prespalestiniaurora
 
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxPancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxpalestiniaurora
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointpalestiniaurora
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxpalestiniaurora
 

Recently uploaded (20)

magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docx
 
Piccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxPiccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docx
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAP
 
presentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptxpresentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptx
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdf
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docx
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda pres
 
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxPancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpoint
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docx
 

Programmazione mobile: ANDROID

  • 1. ITIS Max Planck di Lancenigo diVillorba (TV) A.S. 2013-2014 Prof. PAOLOTOSATO Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Programmazione mobile: ANDROID Seconda lezione: attività e layout
  • 2. 23/04/2014 2 • Le attività • Layout • In Java • InXML Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Indice
  • 3. 23/04/2014 3 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Componenti di un’applicazione Android che fanno uso del display e che interagiscono con l’utente (~ finestra). Classe che estende android.app.Activity. Hanno carattere di esclusività: soltanto un’attività alla volta può occupare il display. La distruzione delle attività è completamente demandata al sistema: si possono ibernare ma non chiudere.
  • 4. 23/04/2014 4 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Metodi di Activity eseguiti durante i passaggi di stato di un’attività package esempi.ciaomondo; import android.util.Log; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // … } protected void onRestart() { super.onRestart(); Log.i("Activity", "Richiamato onRestart()"); } protected void onStart() { super.onStart(); Log.i("Activity", "Richiamato onStart()"); } protected void onResume() { super.onResume(); Log.i("Activity", "Richiamato onResume()"); } protected void onPause() { super.onPause(); Log.i("Activity", "Richiamato onPause()"); } protected void onStop() { super.onStop(); Log.i("Activity", "Richiamato onStop()"); } protected void onDestroy() { super.onDestroy(); Log.i("Activity", "Richiamato onDestroy()"); } }
  • 5. 23/04/2014 5 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Esempio sotto-attività: attività principale public class MainActivity extends Activity implementsOnClickListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Lancia Sotto-attività"); button.setOnClickListener(this); setContentView(button); } public void onClick(View v) { Intent intent = new Intent(this, SubActivity.class); startActivity(intent); } }
  • 6. 23/04/2014 6 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Esempio sotto-attività: attività secondaria public class SubActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("TerminaSotto-attività"); button.setOnClickListener(this); setContentView(button); } public void onClick(View v) { finish(); } }
  • 7. 23/04/2014 7 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Esempio sotto-attività: descrittore dell’applicazione (AndroidManifest.xml) <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="esempi.ciaomondo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SubActivity" android:label="@string/app_name" /> </application> Intent: descrizione di un’operazione che deve essere eseguita. Le attività, attraverso un intent-filter, possono essere attivate in risposta ad uno specifico evento. Gli intent-filter accettano figli di tre tipi: action, category, data.
  • 8. 23/04/2014 8 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Valore di ritorno di una sotto-attività: attività principale public class MainActivity extends Activity implementsOnClickListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Lancia Sotto-attività"); button.setOnClickListener(this); setContentView(button); } public void onClick(View v) { Intent intent = new Intent(this, SubActivity.class); // Il secondo parametro è un intero che rappresenta // il codice della richiesta startActivityForResult(intent, 10); }
  • 9. Le attività 23/04/2014 9 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Valore di ritorno di una sotto-attività: attività principale protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 10) { if (resultCode == 0) { Log.i("Sotto-attività","Interruzioneprima di setResult"); } else if (resultCode == 1) { Log.i("Sotto-attività","Risultato ottenuto correttamente"); Log.i("Sotto-attività","Messaggio: " + data.getStringExtra("messaggio")); Log.i("Sotto-attività","Cliccato: " + data.getBooleanExtra("cliccato", false)); SimpleDateFormat f = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.ITALY); Date d = new Date(data.getLongExtra("timestamp", 0)); Log.i("Sotto-attività","Timestamp: " + f.format(d)); } } } }
  • 10. 23/04/2014 10 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Valore di ritorno di una sotto-attività: attività secondaria public class SubActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("TerminaSotto-attività"); button.setOnClickListener(this); setContentView(button); }
  • 11. 23/04/2014 11 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Le attività Valore di ritorno di una sotto-attività: attività secondaria public void onClick(View v) { Intent data = new Intent(); data.putExtra("messaggio", "Tutto ok!"); data.putExtra("cliccato", true); data.putExtra("timestamp", System.currentTimeMillis()); // Il primo parametro è un intero che rappresenta // l'identificativo del risultato (0 se non viene chiamato setResult). // Il secondo parametro può mancare ed è un Intent, il quale // contiene un dizionario chiave-valore (null se assente). setResult(1, data); finish(); } }
  • 12. 23/04/2014 12 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Layout - Java I componenti View estendono tutti la classe base android.view.View. Per mostrare sullo schermo l’oggetto View specificato: setContentView(View view). Tutti i widget richiedono, nei loro costruttori, un oggetto che estenda la classe astratta android.content.Context (Activity estende indirettamente Context). Pacchetto android.widget • TextView - setText() • EditText - getText() • Button - setText() • ImageView - setImageResource() • ImageButton - setImageResource() • CheckBox - setText() • RadioButton/RadioGroup • ToggleButton (on/off) • DatePicker - getDayOfMonth(), getMonth(), getYear(). • TimePicker - getCurrentHour(), getCurrentMinute(). • AnalogClock/DigitalClock
  • 13. Layout - Java 23/04/2014 13 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Layout: ViewGroup utilizzabili per posizionare i widget sullo schermo Pacchetto android.widget • FrameLayout: allinea il widget in alto a sinistra e lo estende per tutta la dimensione disponibile al layout stesso. • RelativeLayout: per default, il componente aggiunto viene allineato in alto a sinistra (dimensioni reali). E' possibile controllare l’allineamento attraverso setGravity(). • LinearLayout: il suo orientamento può essere stabilito chiamando il metodo setOrientation(), con argomento pari a LinearLayout.HORIZONTAL o LinearLayout.VERTICAL.Se si va di poco oltre la dimensione della riga, il sistema tenta un aggiustamento restringendo i componenti al di sotto delle loro dimensioni ideali. • TableLayout: permette di sistemare i componenti secondo uno schema a tabella. I TableLayout vanno costruiti aggiungendo al loro interno degli oggetti TableRow.
  • 14. Layout - Java 23/04/2014 14 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. TextView label1 = newTextView(this); label1.setText("Nome:"); EditText edit1 = new EditText(this); TextView label2 = new TextView(this); label2.setText("Cognome:"); EditText edit2 = new EditText(this); TextView label3 = newTextView(this); label3.setText("Sesso:"); RadioButtonradio1 = new RadioButton(this); radio1.setText("M"); RadioButtonradio2 = new RadioButton(this); radio2.setText("F"); RadioGroup radioGroup1 = new RadioGroup(this); radioGroup1.setOrientation(LinearLayout.HORIZONTAL); radioGroup1.setGravity(Gravity.CENTER); radioGroup1.addView(radio1); radioGroup1.addView(radio2); radioGroup1.check(radio1.getId());
  • 15. Layout - Java 23/04/2014 15 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Button button1 = new Button(this); button1.setText("Salva"); Button button2 = new Button(this); button2.setText("Annulla"); TableRow row1 = newTableRow(this); row1.setGravity(Gravity.CENTER); row1.addView(label1); row1.addView(edit1); TableRow row2 = newTableRow(this); row2.setGravity(Gravity.CENTER); row2.addView(label2); row2.addView(edit2); TableRow row3 = newTableRow(this); row3.setGravity(Gravity.CENTER); row3.addView(label3); row3.addView(radioGroup1);
  • 16. Layout - Java 23/04/2014 16 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. TableLayout tableLayout = newTableLayout(this); tableLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP); tableLayout.addView(row1); tableLayout.addView(row2); tableLayout.addView(row3); tableLayout.setColumnShrinkable(0, true); tableLayout.setColumnStretchable(1, true); LinearLayout linearLayout1 = new LinearLayout(this); linearLayout1.setGravity(Gravity.CENTER); linearLayout1.setOrientation(LinearLayout.HORIZONTAL); linearLayout1.addView(button1); linearLayout1.addView(button2); LinearLayout linearLayout2 = new LinearLayout(this); linearLayout2.setGravity(Gravity.CENTER); linearLayout2.setOrientation(LinearLayout.VERTICAL); linearLayout2.setPadding(5, 5, 5, 5); linearLayout2.addView(tableLayout); linearLayout2.addView(linearLayout1); setContentView(linearLayout2);
  • 17. Layout - XML 23/04/2014 17 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Editor basato su XML res/layout contiene le descrizioni dei layout e dei widget che saranno poi usati in una o più attività dell’applicazione. Per richiamare un layout XML: setContentView(R.layout.main);
  • 18. Layout - XML 23/04/2014 18 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
  • 19. Layout - XML 23/04/2014 19 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:padding="5dp" > <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top|center_horizontal" android:shrinkColumns="0" android:stretchColumns="1" > <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="fill_horizontal|center_vertical" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="fill_horizontal|center_vertical" android:text="Nome" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="match_parent"> <requestFocus /> </EditText> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="fill_horizontal|center_vertical" >
  • 20. Layout - XML 23/04/2014 20 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="fill_horizontal|center_vertical" android:text="Cognome" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="match_parent"/> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="fill_horizontal|center_vertical" > <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="fill_horizontal|center_vertical" android:text="Sesso" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checkedButton="0" android:gravity="center" android:orientation="horizontal" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="M" />
  • 21. 23/04/2014 21 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. Layout - XML <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="F" /> </RadioGroup> </TableRow> </TableLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Salva" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Annulla" /> </LinearLayout> </LinearLayout>
  • 22. Layout - XML 23/04/2014 22 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. A ogni componente nel file XML è possibile assegnare un ID @+nomeGruppo/nomeId In Java è possibile richiamare il componente e modificarlo R.nomeGruppo.nomeId Esempio: Button button = (Button) findViewById(R.id.button2); Attributi obbligatori: layout_width e layout_height • wrap_content: rende il componente grande tanto quanto impongono i suoi sotto-componenti. • match_parent: allarga il componente fino a fargli occupare tutto lo spazio concessogli dal suo contenitore d’ordine superiore.
  • 23. 23/04/2014 23 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. To be continued …