2013-05-02 16 views
5

Sto lavorando su una vista grafica personalizzata di Android che utilizza Canvas # drawLines e un oggetto paint con antialiasing attivato. La mia vista ha l'accelerazione hardware attivata. Occasionalmente quando pizzico lo zoom in/out, alcune linee nel mio grafico appariranno disgiunte e si assottigliano in un gradiente. Se cambio livello software o disabilito antialias, il problema scompare. È un bug con drawLines o qualcuno ha un'idea di cosa potrebbe succedere?Android - drawline con accelerazione hardware e antialiasing causa artefatti

La prima immagine mostra il problema, la seconda immagine è stata spostata leggermente e mostra come il grafico appare la maggior parte del tempo, con linee completamente unite.

(immagine dimostra questione) enter image description here

(immagine che mostra come il grafico dovrebbe essere - ancora lacune minori paio) enter image description here

risposta

1

Credo che questo post da Romain Guy risponde ad alcune della tua domanda: http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html

In sostanza, l'anti-aliasing non è supportato da DrawLines quando l'accelerazione hardware è attivata. Ricorda inoltre che l'accelerazione hardware non sarà sempre "migliore" per la tua app. Se ciò che stai disegnando può essere accelerato, la tua app ne trarrà vantaggio, ma per alcune operazioni potrebbe essere peggio.

Credo che questo spieghi perché le linee appaiono disgiunte quando l'hardware viene accelerato. Non sono sicuro che questo spieghi perché funziona quando si disattiva l'anti-aliasing. Immagino che sembrerebbe sconnesso anche con l'anti-aliasing, ma chiaramente non è così!

+0

Grazie. Ho incontrato il problema simile. Ho provato a risolvere, usando 'LAYER_TYPE_SOFTWARE'. Tuttavia, la cosa appare più lenta, come nel grafico, c'è un mirino in movimento, basato sul mio evento touch. Sai perché? La mia ipotesi è, è tempo, di trasferire la bitmap fuori dallo schermo del software, in GPU quando viene usato 'LAYER_TYPE_SOFTWARE'. –

+0

Dopo aver disabilitato l'anti-alias, anche se il problema disgiunto non sembra più, la linea disegnata non è liscia e appare brutta. –

1

Provare a forzare un aggiornamento dopo i gesti di ridimensionamento.

Dai un'occhiata alla mia vecchia app Accelerometer Toy. (Sì, è DAVVERO necessario aggiornare ...) Se non si vede il problema con quell'app, allora posso probabilmente aiutare.