Android. Custom View.
|
|
|
- Fabio Leonzio Massari
- 9 anni fa
- Просмотров:
Транскрипт
1 Android Custom View
2 Creazione di una Custom View (1) La classe View è la classe madre di tutti i componenti visuali di Android. Ogni sottoclasse implementa il metodo ondraw(canvas) responsabile del disegno della componente. Procediamo come segue: 1. creare una nuova classe estendendo View 2. implementare un costruttore 3. fare l override del metodo ondraw( ) 4. impostare la View come vista della Activity 5. nel caso serva, implementare l ontouch
3 Creazione di una Custom View (2) 1. Creare una nuova classe estendendo View e dichiarare gli attributi che servono all'interno della View: public class MyView extends View{ private float x,y; private float raggio; private Paint p; In questo esempio vogliamo disegnare un cerchio, quindi dichiariamo due variabili per il centro, un raggio e un oggetto di classe Paint (utilizzato per il disegno).
4 Creazione di una Custom View (3) 2. Implementare un costruttore che inizializza gli attributi: public MyView(Context context) { super(context); p=new Paint(); p.setantialias(true); p.setcolor(color.blue); x=100; y=200; raggio=100; Inizializzo l'oggetto di classe Paint per poter disegnare in blu e assegno un valore iniziare al centro e al raggio del cerchio.
5 Creazione di una Custom View (4) 3. Effettuare l'override del metodo ondraw: protected void ondraw(canvas canvas) { super.ondraw(canvas); canvas.drawcolor(color.black); canvas.drawcircle(x, y, raggio, p); Utilizzo dei metodi della classe Canvas per impostare il colore di sfondo e disegnare un cerchio.
6 Creazione di una Custom View (5) 4. Impostare la view come vista della activity: public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(new MyView(this));
7 Creazione di una Custom View (6) 5. Eventualmente implementiamo il metodo ontouchevent: public boolean ontouchevent(motionevent event) { // istruzioni return super.ontouchevent(event); Possiamo utilizzare event.getx() ed event.gety() per ricavare il punto di touch sullo schermo e mediante event.getaction() l'azione effettuata che può essere: MotionEvent.ACTION_DOWN MotionEvent.ACTION_UP MotionEvent.ACTION_MOVE
8 Creazione di una Custom View (6) Quindi nell'esempio faremo disegnare un nuovo cerchio al tocco: public boolean ontouchevent(motionevent event) { switch(event.getaction()){ case MotionEvent.ACTION_DOWN: x=event.getx(); y=event.gety(); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_MOVE: invalidate(); // forza il ridisegno della view return true; // abbiamo gestito l'evento Spostiamo il cerchio solo quando tocchiamo lo schermo.
9 Esercizio CustomView Creare una view che ad ogni tocco genera 100 cerchi blu con dimensioni, posizioni e alpha channel differenti.
10 Nascondere StatusBar e TitleBar Una applicazione Android solitamente riserva dello spazio nella parte alta dello schermo per la Taskbar (o statusbar) e la Titlebar. Per eliminarle e avere la view a schermo intero: protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // elimina la titlebar requestwindowfeature(window.feature_no_title); // elimina la statusbar getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, WindowManager.LayoutParams.FLAG_FULLSCREEN); setcontentview(new MyView(this)); * Attenzione: eliminanto la statusbar, l utente non vede le notifiche di sistema
11 CustomView da xml Nel caso in cui vogliamo utilizzare la nostra View impostando i parametri da xml, dobbiamo utilizzare un altro costruttore della Custom, quello che riceve anche gli attributi di layout: public MyView(Context context, AttributeSet attrs) { super(context, attrs); Se nella palette di oggetti ci spostiamo nel cassetto Custom & Library Views e diamo refresh, potremmo trovare la nostra View che possiamo personalizzare da xml.
12 Caricare una bitmap La classe BitmapFactory possiede un metodo statico chiamato decoderesource. Come primo argomento gli passiamo un puntatore alle risorse (mediante il metodo getresources) e come secondo argomento l id dell immagine. Bitmap b=bitmapfactory.decoderesource(getresources(), R. drawable.ic_launcher); Per disegnarla utilizziamo il metodo drawbitmap di Canvas (quindi nel metodo ondraw). drawbitmap vuole la bitmap, la posizione e un oggetto Paint (che ora non utilizzeremo): canvas.drawbitmap(b, x, y, null);
13 Esercizio CustomView Esercizio 1: Spostare una immagine in maniera automatica per il canvas, facendo attenzione a non farla uscire dai limiti. Esercizio 2: Creare due zone di touch a destra e sinistra del canvas da usare come controllo per far spostare una immagine a destra e a sinistra.
14 Definire un hot-spot (1) In una View custom possiamo definire alcune zone sensibili al tocco. Solitamente sono zone rettangolari, contraddistinte da un punto di origine (top, left) e un punto di termine (bottom, right). Per questo motivo possiamo utilizzare la classe Rect per definire una zona rettangolare mediante interi (o RectF se le coordinate sono float). Rect zona1=new Rect(top, left, bottom, right); Uno dei metodi della classe Rect è contains(x, y) che ritorna vero o falso a seconda se il punto (x,y) è contenuto nella zona rettangolare.
15 Definire un hot-spot (2) L oggetto Rect può essere utilizzato sia per disegnare una immagine direttamente in una zona che per rilevare una pressione (touch) nella zona stessa. Esempio: Bitmap b; Rect zona1; public MyView(Context context) { super(context); b = BitmapFactory.decodeResource( getresources(), R.drawable.ic_launcher); zona1 = new RectF(100, 100, b.getwidth(), b.getheight()); Definisco una zona che contiene l immagine ma traslata di (100,100) dall origine
16 Definire un hot-spot (3) Per disegnare l immagine usiamo un metodo drawbitmap differente Canvas.drawBitmap(Bitmap b, Rect source, Rect dest, Paint paint); Disegnamo la bitmap (o la parte delimitata da source) dentro dest. protected void ondraw(canvas canvas) { super.ondraw(canvas); canvas.drawcolor(color.black); canvas.drawbitmap(b, null, zona1, null); La zona rettangolare può anche essere disegnata con il metodo drawrect di Canvas: canvas.drawrect(zona1, paint);
17 Definire un hot-spot (4) Per rilevare il touch sulla zona, utilizziamo il metodo contains in ontouch: public boolean ontouch(motionevent event) { switch(event.getaction( )){ case MotionEvent.ACTION_UP: if( zona1.contains(event.getx(), event.gety()) // abbiamo toccato la zona, fare qualcosa break; Se dobbiamo rilevare più zone di touch su una View Custom, può esser comodo istanziare un array di Rect che definiscono gli hot-spot.
Grafica Android Mobile Programming Prof. R. De Prisco
Grafica Un immagine può essere disegnata in un oggejo View grafica semplice, senza necessità di cambiameno un oggeto Canvas grafica complessa, aggiornameno frequeno 144 Classe Drawable rappresenta un oggejo
Android. Android01: Introduzione alle Activity.
Android Android01: Introduzione alle Activity [email protected] Applicazioni Android (1) Una applicazione android è un insieme di task ognuno dei quali è detto Activity. Ogni Activity ha un unico scopo
Corso di programmazione di sistemi mobile 1. Android Laboratorio. Activity, ListView e Adapter
Corso di programmazione di sistemi mobile 1 Android Laboratorio Activity, ListView e Adapter Corso di programmazione di sistemi mobile 2 Passaggio di dati tra activity Il passaggio di tra activity può
Programmazione. Android
Lezione 8 Programmazione Android Ancora sulla UI Scrivere proprie View Scrivere propri Layout Stili e temi 19 Marzo 2015 2 Scrivere una propria View 19 Marzo 2015 3 Scrivere una propria View Gli elementi
Android. Google Maps v2.
Android Google Maps v2 [email protected] Uso delle mappe Google v2 (1) Per poter utilizzare le mappe di Google v2 bisogna prima di tutto ottenere una API map key registrandosi sulla console delle api
Lezione 6 Gestione degli eventi dei widget
A cura di Carlo Pelliccia Nelle due precedenti lezioni abbiamo conosciuto i principali widget di Android e le tecniche utili per richiamarli e disporli nel display dello smartphone. In questa lezione impareremo
Programmazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Android. Layout.
Android Layout [email protected] Interfaccia grafica Interfaccia grafica (1) Esistono due tipi di componenti che ereditano da View: widget (Button, ImageView, TextView, etc.) e layout, sottoclassi di
Programmazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
La classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
Esempi di programmazione
Esempi di programmazione Applet che disegna cerchi Costruire un'applet disegnoapplet che ad ogni pressione del mouse disegna un cerchio 1 disegnoapplet 1. Deve usare la classe Applet? NO 2. Deve estendere
Esercitazione. Docente Ing. Mariateresa Celardo
Esercitazione Docente Ing. Mariateresa Celardo [email protected] Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un
Proprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Programmazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
Implementazione Java di un ADT
Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice
Uguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica
Corso di laurea in Informatica Mobile Prof. De Prisco Prova scritta del 22/01/2016 NOME: COGNOME: MATRICOLA: Domande Punti 1 /10 2 /10 3 /10 4 /10 5 /10 6 /10 7 /10 8 /10 9 /10 10 /10 TOTALE /100 Quesito
Modulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
Polimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro [email protected] Programmazione,
18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Fondamenti di Informatica T-1. Costruttori Ereditarietà
Costruttori Ereditarietà 2 Costruttori Si occupano della creazione e dell'allocazione in memoria degli oggetti. public class Persona{ //Variabili di istanza private String nome; private String cognome;
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Esempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
Alberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
La programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY
MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY 1 Sommario 1. INTRODUZIONE... 3 2. GET METAIO... 4 2.1. PREREQUISITI... 4 2.2. INTALLAZIONE... 4 2.3. PROGETTI ESEMPLIFICATIVI... 4 3. USARE
Pag. 1/8. Esercizi lezione 4. Esercizio A
Pag. 1/8 Esercizi lezione 4 Esercizio A Progettate una UI con una textview (id=text) e un pulsante (id=button). Cliccando sul pulsante appare una alert dialog con un avviso e un pulsante. Suggerimenti:
Esercitazione Google Maps
Esercitazione Google Maps Esercizio 1 Visualizzare i risultati della API comuni.php su una mappa geografica. Soluzione Come prima cosa, occorre creare una chiave di utilizzo della libreria Google Maps.
ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:
ESERCIZI JAVA Esercizi sulle Interfacce Esercizio 1: Java mette a disposizione un'interfaccia chiamata Comparable. Quando un oggetto implementa questa interfaccia esso può implementare un metodo chiamato
layout senza tabelle Posizionamento con i CSS Ad ogni elemento HTML corrisponde un area rettangolare, detta box Contenuto
Posizionamento con i CSS creare layout senza tabelle 1 Gestione degli elementi della pagina Il box model Ad ogni elemento HTML corrisponde un area rettangolare, detta box Margine Bordo Area di padding
CATTURARE UNA SCHERMATA
CATTURARE UNA SCHERMATA Documento creato da Marcantonio Severgnini e distribuito con licenza Creative Commons CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) Può capitare, mentre si sta utilizzando
Esempio: Ogni colonna può contenere un solo tipo di dati. Colonne e righe sono numerate partendo da zero. L Header non conta nella numerazione:
JTable Cos è una JTable Una JTable è un elemento Swing che rende possibile visualizzare delle informazioni sotto forma di tabella e se necessario ne permette la modifica. Header - Nelle JTabel è possibile
Android lezione 9 Le listview
Android lezione 9 Le listview In questa lezione introduciamo le ListView. Una listview ci permette di mostrare una serie di elementi all interno di una lista che puo anche essere scrollata. Ecco un esempio
Creare una gif animata con GIMP!
Creare una gif animata con GIMP! 1) Aprire l immagine utilizzando GIMP! (dopo aver avviato il programma, cliccare su FILE apri selezionare il file desiderato) L immagine viene aperta come sfondo. Tra parentesi
Implementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Esercitazione n 3. Obiettivi
Esercitazione n 3 Obiettivi Capacità di analisi e di estensione di progetti esistenti Linguaggio Java: Ereditarietà delle classi Utilizzo di costruttori e metodi di superclasse Visibilità: public, private,
Concorrenza e sincronizzazione
Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca [email protected] Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Progettazione del Software
Progettazione del Software Simulazione di esame Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Anno Accademico 2015/2016
3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;
Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso
Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
strumento Crea rettangoli
Sfondo Iniziamo visualizzando la griglia (Visualizza>Griglia) e attivando quindi lo strumento Crea rettangoli. Disegniamo il quadrato esterno cliccando e trascinando sulla pagina con lo strumento Crea
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
Alberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
La geolocalizzazione
La geolocalizzazione La maggior parte dei dispositivi mobili di ultima generazione è dotata di un antenna GPS che permette di conoscere, in breve tempo e con la precisione di qualche metro, la propria
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
Esercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
Esempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
Prova d Esame 07.04.2006 Compito A
DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public
Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un
Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie
14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Esempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
