Jeg blir lei av å se så mye feilinformasjon postet og gjentatt over alt om hvordan grafikk rendering fungerer på Android. Her er noen sannhet: • Android har alltid brukt noen maskinvareakselerert tegning. Siden før 1.0 alt vindu sammensettingen til skjermen har blitt gjort med maskinvare. • Dette betyr at mange av animasjonene du ser har alltid vært maskinvareakselerert: menyer blir vist, skyve varslings skyggen, overganger mellom aktiviteter, pop-ups og dialoger vise og skjule, etc. • Android gjorde historisk bruke programvare for å gjengi innholdet i hvert vindu.
For eksempel i en UI som https://www.simplemobilereview.com/wp-content/uploads/2010/12/2-home-menu.png det er fire vinduer: statuslinjen, bakgrunnen, bærerakett på toppen av bakgrunnen, og menyen. Hvis et av vinduene oppdaterer innholdet, for eksempel fremheve et menyelement, da (før 3.0) programvare brukes til å tegne det nye innholdet i dette vinduet; men ingen av de andre vinduer er tegnet på nytt i det hele tatt, og de re-sammensetningen av vinduene er gjort i maskinvare. Likeledes er enhver bevegelse av vinduene slik som meny går opp og ned er all maskinvare gjengivelse.
• Ser på tegning innsiden av et vindu, trenger du ikke nødvendigvis trenger å gjøre dette i maskinvare for å oppnå full 60fps gjengivelse. Dette avhenger veldig mye av antall piksler i skjermen og hastigheten på CPU. For eksempel har Nexus S ingen problemer med å gjøre 60fps gjengivelse av alle normale ting du ser i Android UI som å rulle lister på sin 800x480 skjermen. Den opprinnelige Droid imidlertid slitt med en tilsvarende skjermoppløsning. • "Full" hardware akselerert tegning i et vindu ble lagt i Android 3.0. Gjennomføringen i Android 4.0 er ikke noe mer fullstendig enn i 3.0.
Fra og med 3.0, hvis du setter flagget i programmet ditt å si at maskinvareakselerert tegningen er lov, så alle tegning til programmets vinduer vil bli gjort med GPU. Den viktigste endringen i denne forbindelse i Android 4.0 er at nå apps som er eksplisitt rettet mot 4,0 eller høyere vil ha akselerasjon aktivert som standard i stedet for å måtte sette android: handwareAccelerated = "true" i sitt manifest.
(Og grunnen til dette er ikke bare slått på for alle eksisterende applikasjoner er at noen typer tegning operasjoner ikke kan støttes godt i maskinvare og det også påvirker atferd når en applikasjon ber om å ha en del av sin UI oppdatert. Tvinge maskinvareakselerert tegning på eksisterende apps vil bryte et betydelig antall av dem, fra su