Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
src
– file sorgenti
• gen
– file generati automaticamente
• Librerie Android
• assets
– Assets, es. assets/fonts/…
• bin
– file da istallare sul target device
• libs
– librerie esterne
• res
– resources (file di layout, immagini, suoni,ecc.)
• AndroidManifest.xml
– informazioni sull’app : permessi , amvità, icona
• proguard-project.text
– per il tool ProGuard: compatta, ommizza e offusca il codice sorgente (protezione)
• project.properUes
– specifica alcune proprietà dell’app
EMULATORE
Real device :
veloce, facile gestie l’input (es. rotazioni display)
l’esecuzione è reale
Emulatore :
lento (a volte molto), alcune operazioni sono difficoltose
ci sono dei bug
Facile creare situazioni particolari: (batteria scarica,arrivo di un messaggio )"
UNITA MISURA
Il primo passo è quello di creare nella sotto res/value il file string.xml qui andremo a mettere tutte le
stringhe che verrano utilizzate di default oppure se non abbiamo creato una traduzione per una
lingua del dispositivo del dispositivo es:
<resources>
<string name="hello">Hello World, ExampleActivity!</string>
<string name="app_name">Example</string>
</resources>
successivamente creamo un file string in una directory diversa per ogni lingua di cui vogliamo
fornire una traduzione ad esempio
back stack
In genre un app è formata da più activity ed ogni activity può lanciare un altra activity tramite gli
intent.
Un adapter ,viene utilizzato insieme alle listView ,ed è un componente che si occupa della
rappresentazione grafica di una fonte dati,generalmente un arrey, e dell'interazione con essi, per
ogni elemento della ListView.
Un classico esempio potrebbe essere quello di vole mostrare una lista di nomi nella nostra app.Il
primo passo è quello di creare un arrey di nomi , poi creamo un oggetto array adatapter a cui
passimo il contesto , l'id della text view che deve contenere il nome , un file di layout in cui viene
descritto come deve essere visualizzato l elemento e infine la nostra fonte di dati coiè l'array. Poi
utilizziamo il metodo ListView.setAdapter(Adapter) per assegnare l'adapter alla list view.
INTENT
La classe Intent è una classe che specifica un'operazione astratta da svolgere.
intent filter
il nodo intent filter ha il preciso compito di informare android che la nostra activity è in grado di
svegliarsi in seguito al verificarsi di particolari eventi generati dal dispositivo o da un altra app.
il tag action indica il nome dell azione che la nostra app deve intercettare e gestire
il tag category è un informazione aggiuntiva che identifica il tipo di azione
il tag data fornisce informazioni sulla tipologia dei dati che è in grado di gestire
Nell'esempio l'activity ShareActivity risponde a una richiesta di invio dati perchè ha come action la
costante sand ed è in grado di gestire i dati nel formato text/plain
PERMESSI
Android protegge risorse e dati con un meccanismo di permessi di accesso
Asynk TASk
La classe AsynkTask facilita l'interazione tra il mani thread e altri thread in esecuzione in back
gruond
La classe asynk task è una classe generica AsynkTask<Param,Pogress,Result>:
-onPreExecute() : viene esegutio nel main thred prima di doInBackground (per settare variabili o
rendere visibile la progres bar);
-doInBackground() : viene eseguti nel thred secondario , retituisce una variabile di tipo result, e
prendo come argomento una variabile dk tipo Param; puo richiamere il metodo publishProgress();
-onProgressUpdate(): viene eseguito nel mainthred in risposta a publishProgress() prende come
argomento Progress;
-onPostExecute() : viene eseguito nel main thred dopo doInBackgrond e prende come parametro
un istanza di tipo Result che sarebbe il valore restituito di doInBackground();
FRAMMENTI
Un frammento rappresenta una porzione dell interfaccia grafica , un activity puo ospitare diversi
frammenti che possono essere inseriti e eliminati durante l esecuzione per creare effetti diversi in
base,ad esempio, alle dimensioni del display.
Un frammento puo essere visto come una sorta di sub-activty in quanto ha un proprio ciclo di vita e
un proprio layout che è strettamente legato a quello dell activity che lo ospita.
Nell Activity ospitante si possono controllare i frammenti tramite la classe FragmentManager
che è responsabile che è responsabile della gestione dei frammenti dell della aggiunta della view dei
frammenti all albero della view dell app
ALARM
MEMORIZZAZIONE
editor.putBoolean("KEY", bool_value);
editor.commit();
- DatabaseSql
Dati strutturati in database privati a cui si puo accedere con normali query sql.
DATABESE
Android fornisce suport per databse sql all interno dell app. Bisogna crare un classe che estenda la
classe SQLiteOpenHelper e sovrascrivere il mtodo on create(dove in genere viene creato il db) e il
metodo on update (utilizzato per fare aggiornamenti al db ).
la classe cursor rappresenta un puntatore ad un set di risultati, permette di navigare tra i dati del
risultato della query (move nest,move first,muove last, getString(int columnIndex) )
ALBERO DELLE VIEW
L’albero delle view è un Albero n-ario che contiene tutti gli elementi del Layout, contenitori e
widget, mettendoli in un ordine gerarchico, partendo dalla radice che rappresenta il MainLayout
fino ad arrivare ad ogni singolo widget.
Il meccanismo di layout inizia quando viene chiamato il metodo requestLayout su una view
dell'albero. Tale metodo viene chiamato quando una view ha bisogno di altro spazio.
requestLayout mette un evento nella coda degli eventi della UI. Quando l'evento viene
processato ogni container view può interagire con i figli
• Il processo ha due fasi
1. misura delle views contenute nel container
2. posizionamento delle views all’interno del container
• Tutte le view devono implementare la fase 1
• Sole le view container devono avere anche la fase 2
La fase di misura offre la possibilità alle views di chiedere lo spazio di cui hanno bisogno
• Android inizia il processo chiamando il metodo measure sulla radice dell’albero
– a partire dalla radice ogni container view chiede ai figli lo spazio di cui hanno bisogno
– la richiesta si propaga ricorsivamente
• Nella fase di Layout i view container comunicano la posizione effettia ad ogni view
figlio tramite il medoto onLayout
CANVAS
oggetto canvas viene utilizzato per disegnare immagini complesse che subiscono di numerosi
aggiornamenti,come ad esempio in un giochino, oppure se deve subire delle animazioni
Drawable
rappresenta un oggetto che puo essere disegnato in una view
Animazioni
android permette di definire animazioni da adare alle immagini tramite un file xml
Per caricare un animazione si dever chiamare il metodo loadAnimation(Context c, int id)
Per avviare un animazione bisogna richiamre il metodo startAnimation(Animation anim)
Nela caso del muti tach il pointer è il singolo evento, e il pointer ha un id univoco per tutto il tempo della sua
esistenza.
Un motion event rappresenta:
-un singolo pointer
-a volte piu di un pointer a cui si puo accedere tramite un indice che puo cambiare per eventi successivi
GESTURE DETECTOR
SENSORI
i dispositivi android sono dotati di senzori che permettono di reperire e gestire dati esterni
grezzi.
Un activity che vuole utilizzare i sensori deve implementare la classe SensorListener.
Poi tramite il sensor manager dobbiamo povvedere a verificare se il sensore che vorremo
utilizzare esiste
sm = (SensorManager))getSystemService(Context.SENSOR_SERVICE);
if(sm.getDefaultSesnor(Sensor.TYPE_LIGHT)!=null)
// il sensore è disponibile
else
// il sensore non è disponibile
E' buona prassi, prerisparmiare batteria, disabilitare il sensore quando viene richiamato il
metodo onPause dell activity , e riabilitarmo quando viene richiamato il metodo onResume
sm.registerListener(this,mLight,SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.unregisterListener(this);
onSensorChange : che viene richiamato quando avviene un nuovo evento sul sensore
onAccuracyChange : che viene richiamato quando cambia l'accuratenzza del sensore
NOTIFICATION
Ci sono 3 modi per notificare delle informazioni all utente al di fuori nella normale
interfaccia dell app:
Toast : avvisa l'utente di un'operazione in un piccolo pop up. Prende solo lo spazio di cui ha
bisogno per il messaggio e l'activity resta visibile e interattiva. Eventualmento è possibile
anche personalizzare il toast modificando alcuni parametri e facendo poi l'inflate del file
xml che descrive l'aspetto del toast che deve essere visualizzato
Dialog : sono notifiche pop up che permette all utente di fare una scelta oppure inserire
infromazioni aggiuntive
Notification : Una notifica è un messaggio che viene mostrato nella barra delle notifiche.
L'utente può vedere i dettagli della notifica aprendo il pannello delle notifiche.
Sia la barra che il pannello delle notifiche sono gestite dal sistema, quindi sono sempre
accessibili
public void showNotification(View v) {
Notification.Builder notificationBuilder = new Notification.Builder(
getApplicationContext()) .setTicker("Messaggio breve").setSmallIcon(R.mipmap.pacman_ghost)
.setAutoCancel(true).setContentTitle("Titolo notifica") .setContentText("Testo della notifica");
NotificationManager mNotificationManager =
(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1,notificationBuilder.build()); }