Autore Topic: Prestazioni Canvas per drawCircle  (Letto 958 volte)

Offline hacknet

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    SOFTWARES.it
Prestazioni Canvas per drawCircle
« il: 10 Ottobre 2012, 15:37:19 CEST »
0
Ciao a tutti, mi sono imbattuto in un problema di performance nell'uso delle canvas associate ad un LinearLayout.
La scelta era stata fatta per una gestione semplice delle canvas ponendo il Layout su un piano con la trasparenza gestendo altri oggetti come ad esempio un pulsante o altri oggetti sovrapposti al Layout.

Praticamente sul GNexus ottengo 14/15fps per disegnare solo linee cerchi e testi senza trasparenze (l'unica trasparenza è data da: canvas.drawColor(Color.TRANSPARENT); che uso per visualizzare lo sfondo), ho implementato il tutto come segue:

Codice (Java): [Seleziona]
LinearLayout tr = (LinearLayout) findViewById(R.id.linl);
canvas = new grafica(this); //La classe grafica contiene il draw e le varie variabili.
canvas.setLayoutParams(new LayoutParams(dispX, dispY));
tr.addView(canvas);

e con un thread chiamo canvas.invalidate per ottenere il ridisegno.

Qualcuno saprebbe indicarmi una soluzione semplice ma efficace per migliorare le prestazioni almeno fino a 20/25  fps?

ps. ho scoperto che la colpa dei rallentamenti è imputabile maggiormente drawcircle, a questo punto riformulo la domanda su come migliorare le performance della suddetta funzione.

Grazie.
« Ultima modifica: 10 Ottobre 2012, 18:54:23 CEST da hacknet »

Offline hacknet

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    SOFTWARES.it
Re:Prestazioni Canvas su LinearLayout
« Risposta #1 il: 10 Ottobre 2012, 18:53:33 CEST »
0
Ho risolto da solo, al primo loop di draw salvo le canvas statiche su una bitmap tramite drawBitmap per poi fare solo il draw della bitmap ottenendo circa 60fps.