Autore Topic: Utilizzo SurfaceView per immagini che cambiano velocemente  (Letto 1149 volte)

Offline valfa

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Utilizzo SurfaceView per immagini che cambiano velocemente
« il: 11 Giugno 2011, 15:33:57 CEST »
0
Salve,
ho letto tutti i topic della sezione ma purtroppo non ho trovato nessun problema simile al mio..

Sto sviluppando un'appicazione particolarmente complessa (non sto qui a farvi perdere tempo...)
scrivo in questo topic perchè tale applicazione deve avere una garfica animata..

In particolar modo quest'applicazione riceve dei pacchetti dalla rete....ad ogni pacchetto ricevuto deve disegnare sul display un grafico con una specie di onda che passa...
Per farvi un'idea potete pensare ad un inpulso elettrico stile battito cardiaco...

Per il momento io ho implementato una classe che estende una semplice View dove faccio l' Override del metodo onDraw()
Poi in giro per il web ho letto esempi di utilizzo dei Path che uso per tracciare i punti che dovrebbero essere l'impulso...
L'effetto del movimento lo ottengo agento nel metodo onDraw e modificando le coordinate del Path che avanza fino alla fine del display e si azzera quando arrivo alla fine.

Il miei dubbi sono sulle performances:

Inanzi tutto ho capito che sarebbe molto meglio estendere SurfaceView per avere una gestione multithread del tutto
(La UI non rimarrebbe bloccata in attesa..)
ma nonostante questo mi preoccupa il costo del metodo onDraw in cui io ogni volta mi trovo costretto a ridisegnare tutto il grafico compreso asse delle X e delle Y.
...difatti l'animazione ottenuta non mi sembra neppure un granchè...
se poi vogliamo aggiungere il fatto che non mi posso assolutamente permettere di peggiorare tutta la restante parte della logica applicativa che dialoga con la rete e fa elaborazioni molto più importanti della grafica che vi ho appena descritto

Secondo la vostra esperienza/competenza ed opinione....per simulare graficamente un impulso o un'onda (es sinusoide, ad esempio un battito cardiaco) è questa la via giusta? (Canvas...Paint....Path....etc etc)

Sarebbe meglio un'animation?
Voi usereste le openGL? (a me purtroppo sconosciute...)
Per non dover ridisegnare sempre gli assi del grafico converrebbe utilizzare un'immagine come sfondo o le prestazione non migliorerebbero di molto?

Vi ringrazio in anticipo per tutti i suggerimenti che vogliate darmi

Buon week end a tutti!!!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Utilizzo SurfaceView per immagini che cambiano velocemente
« Risposta #1 il: 11 Giugno 2011, 17:52:33 CEST »
0
A tempo perso sto facendo una specie di emulatore di oscilloscopio.

Per capire quali prestazioni attendermi, in pratica ho impostato un gameloop classico senza openGL (sono partito da questo esempio : Playing with graphics in Android – Part I on Android Development ), esteso la surfaceview e gestito di ridisegno con thread a parte. L'emulatore di oscilloscopio per ogni frame disegna una forma d'onda sinusoidale composta da 1024 punti.

Su Galaxy S full-screen arrivo a 60fps tranquillo in entrambe le orientazioni del display.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline valfa

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:Utilizzo SurfaceView per immagini che cambiano velocemente
« Risposta #2 il: 11 Giugno 2011, 20:29:31 CEST »
0
Grazie mille per la celere risposta

 ;-)

leggerò con attenzione i link che mi hai consigliato....

in attesa di altri interventi magari di chi un'applicazione del genere l'ha già sviluppata

buona serata

ciao 8-)