Fragments. Frammento. Un acmvity può ospitare vari frammenm. Si possono creare UI con molm frammenm

Documenti analoghi
@ ITT M. BUONARROTI, TRENTO ANDROID DEVELOPMENT ELEMENTI BASE. RAMAN KAZHAMIAKIN OSCAR GIOVANNI DE

Mobile Programming. Prova scritta del 11/01/2018. Prof. De Prisco. Corso di laurea in Informatica

Corso di programmazione di sistemi mobile 1. Android. Activity, View e Layout

Mobile Programming. Prova scritta del 05/02/2016. Prof. De Prisco. Corso di laurea in Informatica

@ ITT M. BUONARROTI, TRENTO ANDROID DEVELOPMENT UI PERSONALIZZATE E MENU. RAMAN KAZHAMIAKIN OSCAR GIOVANNI DE

Android. Project, Activity, Layout e Toast

Mobile Programming. Prova scritta del 07/02/2015. Prof. De Prisco. Corso di laurea in Informatica

ProgettAzione tecnologie in movimento - V anno Unità 4 - Applicazioni per i sistemi mobili

Programmazione Android

Programmazione. Android

Corso di programmazione di sistemi mobile 1. Android Laboratorio. Activity, ListView e Adapter

Corso Base. Lezione 5. Maurizio Cozzetto, Francesco Sarasini

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Mobile Programming. Prova scritta del 07/04/2016. Prof. De Prisco. Corso di laurea in Informatica

Mobile Programming. Prova scritta del 08/01/2016. Prof. De Prisco. Corso di laurea in Informatica

Sistemi Mobili e Wireless Android Interfacce utente: Widget e Layout (2)

Applicazioni grafiche e finestre

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Corso Base. Lezione 3. Maurizio Cozzetto, Francesco Sarasini

Esempio: Interfacce. Gioco Interfacce

Esempio: Interfacce. Gioco Interfacce

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica

Android. Google Maps v2.

Lezione 3 su Android: I button in Android

Esercitazione 11. Liste semplici

Programmazione. Android

Mobile Programming. Prova scritta del 10/02/2017. Prof. De Prisco. Corso di laurea in Informatica

Android lezione 9 Le listview

Android. Layout.

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Il linguaggio C. Puntatori e dintorni

Mobile Programming. Prova scritta del 28/01/2015. Prof. De Prisco. Corso di laurea in Informatica

ALBERI. Angelo Di Iorio Università di Bologna

Esercitazione n 2. Obiettivi

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Inizializzare oggetti

Metodi di una Collection

JAVA GENERICS. Angelo Di Iorio Università di Bologna

Permessi Android Mobile Programming Prof. R. De Prisco

Pag. 1/8. Esercizi lezione 4. Esercizio A

Il paradigma OO e le Classi

Android. Custom View.

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Prova d Esame Compito A

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

public class Counter2 extends Counter { public void dec() { val--; }

Laboratorio di Sistemi Ordinamento di oggetti Java

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

Corso Base. Lezione 4. Maurizio Cozzetto, Francesco Sarasini

Prova d Esame Compito A

ereditarietà e polimorfismo

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Introduzione alle JSP

Sistemi Mobili e Wireless Android Interfacce utente: Widget e Layout (1)

Elemen& grafici. Albero delle view. Device Monitor AA 2014/15. hierarchyviewer comando della cartella tools

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Variabili e Metodi di classe Interfacce e Package File in Java

Android. Android04: Gestione eventi.

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Tipi riferimento e stringhe

Avviate Specifi dall icona presente sul vostro Desktop.

Programmazione Orientata agli Oggetti in Linguaggio Java

Campo Minato. in java

Esercitazione n 2. Obiettivi

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

C# delegates. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 1. Delegate

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

Architetture distribuite Alcuni esempi: Alcuni commenti sul ruolo del registry. Import Interfaccia remota Due metodi remoti

Programmazione Procedurale in Linguaggio C++

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Le liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo?

Programmazione ad Oggetti. JFrame è la classe di base per le finestre Fornisce tutte le caratteristiche di una finestra vuota

Passaggio dei parametri

Laboratorio di informatica Ingegneria meccanica

GRAFI. Angelo Di Iorio Università di Bologna

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Fondamenti di Informatica T-1

JFrame. Chiusura della finestra. JFrame - Esempio. Tipologia di GUI. Linee guida. Programmazione ad Oggetti 6/12/09. finestre

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Programmazione Concorrente e Distribuita

A. Ferrari. oggetti & game. Python. Alberto Ferrari Informatica

Istruzioni di controllo. Ancora sull istruzione if. then-else: else: Flusso di controllo. L istruzione if-then. then-else: else: Sintassi.

La geolocalizzazione

Corso di Reti di Calcolatori LA

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Ambienti di Programmazione per il Software di Base

GRAFICA ED EVENTI SWING, AWT e JavaFX

Transcript:

Università di Salerno - a.a. 2013-2014 1 Frammento rappresenta una porzione dell UI 2 Un acmvity può ospitare vari frammenm I frammenm possono essere inserim e rimossi durante l esecuzione Si possono creare UI con molm frammenm anche in funzione della grandezza dello schermo 1

3 Un frammento è sempre ospitato da un acmvity Un frammento è una sorta di sub- acmvity ha il suo ciclo di vita che è streramente legato a quello dell acmvity es. se l acmvity è in pausa (stato paused del ciclo di vita) lo sono anche tuv i suoi frammenm se l acmvity è in esecuzione (stato resumed ) allora i frammenm possono essere gesmm La porzione di UI occupata dal frammento deve essere specificata nel layout può essere definita dinamicamente 4 Spazio per il frammento 1 Spazio per il frammento 3 App user Interface Spazio per il frammento 2 2

5 Filosofia di progerazione Interfacce utente dinamiche in parmcolare per sfrurare schermi grandi Esempio Mpico App che gesmsce un elenco di elemenm es. Mtoli di armcoli di un giornale Ogni elemento può essere cliccato per essere esaminato es. visualizzazione dell armcolo 6 Si può usare un frammento per l elenco un frammento per la visualizzazione Se lo schermo è piccolo sarà visibile solo uno dei frammenm cliccando un Mtolo si passerà dal frammento Mtoli al frammento visualizzazione Se lo schermo è grande saranno visualizzam entrambi i frammenm 3

7 Creare frammenm 8 Istanziare un oggero Fragment la classe Fragment è simile alla classe AcMvity proprio ciclo di vita 4

Creare frammenm 9 Normalmente dovremo implementare almeno oncreate() Inizializzazione come in un acmvity NON definiamo il layout oncreateview() definiamo il layout. Il metodo deve resmtuire una View facciamo l inflate di un file di layout onpause() il primo metodo chiamato quando il frammento viene eliminato (si dovrebbero rendere permanenm eventuali cambiamenm altrimenm si perdono) Creare frammenm 10 public stamc class ExampleFragment extends Fragment { @Override public View oncreateview(layoutinflater inflater, ViewGroup view, Bundle savedinstancestate) { // Inflate the layout for this fragment View v =inflater.inflate(r.layout.example_fragment, container, false); return v; è l equivalente di setcontentview nella acmvity host view è un oggero che serve a specificare i parametri di layout 5

11 Creare frammenm Un frammento può essere inserito stamcamente nel layout <?xml version="1.0" encoding="up- 8"?> <LinearLayout xmlns:android="hrp://schemas.android.com/apk/res/android" android:orientamon="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name= com.example.news.armclelistfragment" android:id="@+id/list" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.news.armclereaderfragment" android:id="@+id/viewer" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> 12 6

Creare frammenm 13 Oppure dinamicamente a runmme FragmentManager fm= getfragmentmanager(); FragmentTransacMon v = fragmentmanager.begintransacmon(); ExampleFragment fragment = new ExampleFragment(); v.add(r.id.fragment_container, fragment); v.commit(); R.id.fragment_container è un ViewGroup nel layout dell acmvity che individua la porzione dello schermo da dedicare a questo frammento GesMre i frammenm 14 Usiamo il FragmentManager FragmentManager fm= getfragmentmanager(); Iniziamo una transazione FragmentTransacMon v = fragmentmanager.begintransacmon(); EffeRuiamo le operazioni inserire un frammento (già vista) rimuovere un frammento sosmtuire un frammento Commit v.commit(); 7

GesMre i frammenm 15 addtobackstack() per inserire i cambiamenm nel backstack Il backstack considera solo le acmvity dobbiamo gesmre manualmente i frammenm Se non chiamiamo addtobackstack quando premiamo back salteremo i cambiamenm fav con i frammenm non è quello che l utente si aspera Esempi 16 Lifecycle LifeCycleDyn 8

Comunicare con l acmvity 17 Può essere umle comunicare con l acmvity Creare dei metodi di callback Ad es. il frammento può definire un interfaccia public stamc class MyFragment extends Fragment {... // Container AcMvity must implement this interface public interface OnArMcleSelectedListener { public void onarmcleselected(int index);... Comunicare con l acmvity App lista deragli elemenm 18 Frammento lista deve comunicare l elemento selezionato Frammento deragli deve ricevere l informazione Evitare la comunicazione direra fra i frammenm diminuisce la riusabilità 9

Comunicare con l acmvity 19 Frammento A Main AcMvity Frammento B Interfaccia Communicator void respond Implementa Communicator oncreate { A.setCommunicator(this) deraglio(index) { mostra deragli index Portrait AcMvity setcommunicator { communicator = MainAcMvity onitemclick{ MainAcMvity.respond(index) respond(index) { if (landscape) { B.deRaglio(index) else { New acmvity(index) FrammenM e backstack 20 Nuova acmvity per la modalità portrait facilita la gesmone del backstack per le acmvity è automamca FrammenM e backstack i frammenm non vengono inserim nel backstack quando premiamo il pulsante back si ritorna alla precedente acmvity saltando eventuali cambiamenm dell UI dovum all uso dei frammenm se si vuole occorre gesmre il backstack manualmente 10

Esempi 21 Citazioni FrammentiBackstack FragmentCartelle FrammenM Esercizio (avanzato) 22 L app FragmentCartelle umlizza un layout predefinito di 12 cartelle quindi può gesmre al massimo 12 cartelle Scrivere una nuova versione in cui il layout viene costruito dinamicamente creare nuove view (LinearLayout, Frame, etc) LayoutParameters view.add() 11