Domanda

Al momento sto implementando un tastiera software (utilizzando qualche previsione sofisticati), e il disegno utilizzando tela è insufficiente in termini di perfomance. Sto diventando volte disegno telaio ben al di sopra 100ms, che è chiaramente inaccettabile.

La tastiera si compone di circa 33 chiavi, ognuna disegnata con drawRoundRect e un semplice testo di sopra. Nessun widget di sorta vengono utilizzati, quindi è la perfomance pianura. Inoltre, quasi tutti i suggerimenti perfomance Googles sono in uso, in modo da non thats il motivo per la velocità sia.

Ora ho raggiunto un punto in cui il passaggio a OpenGL in realtà avrebbe senso, ma io sono ancora scettici considerando l'impatto di una tastiera basato su OpenGL potrebbe avere sulla durata della batteria.

Come ho trovato alcuna documentazione sufficiente su questo argomento, spero che qualcuno qui mi può puntare nella giusta direzione.

È stato utile?

Soluzione

Indipendentemente da quanto drena la batteria, probabilmente non si vuole fare questo perché la maggior parte dei dispositivi esistenti non supportano più contesti OpenGL, allo stesso tempo, in modo dalla tastiera morbida sarebbe incompatibile con qualsiasi applicazione che utilizza OpenGL per il proprio disegno. Su questi dispositivi contesto OpenGL è di proprietà solo dalla applicazione in primo piano; esso non può essere utilizzato in parti secondarie dell'interfaccia utente come la tastiera molle.

Inoltre, come ha detto il poster precedente, si sarebbe probabilmente meglio fuori alla ricerca come ottimizzare il disegno regolare. Disegno vettori è abbastanza lento, in modo da pre-rendering in immagine bitmap per proprio non blits bitmap aiuterebbe molto. Anche stare attenti a disegnare solo le parti della finestra che sono cambiati. 100 ms è una quantità abbastanza folle di tempo per prendere per disegnare l'interfaccia utente, quindi non ci sono quasi certamente ottimizzazioni significative che si possono fare. Si potrebbe desiderare di guardare il codice KeyboardView nella piattaforma (che viene utilizzato dalla tastiera soft di serie e IME del campione); questo contiene già molte ottimizzazioni di disegno simile.

Altri suggerimenti

Una parentesi: Avete considerato rendendo le chiavi una volta e poi li afferra come sprite e copiarlo sul video questi? Dovrebbe essere di gran lunga superiore al rendering della grafica vettoriale.

Non posso dare numeri duri (e come apphacker sottolineato, questo è specifico del dispositivo), ma anche se OpenGL è con accelerazione hardware e quindi potrebbe usare più la batteria, l'operazione dovrebbe completare molto più velocemente e in modo da utilizzare meno energia in totale. Se non è con accelerazione hardware, sembra logico che si dovrebbe utilizzare solo più potere se ci vuole più tempo per completare l'operazione, come si sono solo lo scambio di un'API di disegno per un altro. Tutto sommato, come avete solo disegnare quando gli eventi accadono esterni dovrebbe non importa molto a lungo andare, come le persone sono probabilmente tiping solo pochi tasti per minuto.

Probabilmente basta per la sua attuazione (forse in un banco di prova semplificata) ed effettuare le misurazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top