Hogyan készítsünk élő háttérképet alkalmazás nélkül
Android élő háttérkép. Hogyan kell csinálni?
Nem számít, milyen háttérképet gondolsz, 2 különböző megközelítés van az Ön ötleteinek megvalósításához: SGL (a továbbiakban: vászon) és az OpenGL. Amikor létrehoztam az első tapétámat, néhány napot vettem, hogy kipróbáljam a különböző eszközöket és módszereket, így ez a cikk egy kis időt takarít meg, és gyorsan beírja Önt az ügybe.
Vászon
Ha az Ön számára működik – ne gondoljon az OpenGL-ről
Mi a vászon? Ez a fő módja annak, hogy rajzoljon GUI-t az Androidban. Minden formátum, gomb és kapcsoló ezt a technológiát használja. Bizonyos méretű (x például) bitképet kapunk, amelyre szükségünk van. A vászonosztály segítségével rajzolhatunk, amely gazdag magas szintű API-vel rendelkezik a rajzoláshoz. Mondjuk, rajzoljon egy adott vastagság egy adott vastagságát, amely egy bizonyos színű simítással nem nehéz. Vannak még az árnyékolók is.
De miért kérdezi az OpenGL?
A vászon hátrányai:
- alacsony sebesség. Minden grafikával végzett munka hardveres gyorsítás nélkül történik (van egy kivétel). Ez az, hogy a bitsmap kitölti a központi processzor erőfeszítéseit, amellyel tökéletesen kezelhető, ha a bitmap mérsékelt méretű. A rajzarány arányos a területkel, és lelassul, ha megnövekedett.
- Nem 3D és fagy. A KANVA nem támogatja a 3D-t, az anyagok tulajdonságait, a fényforrások elrendezését és beállítását. Ha szüksége van valamire ebből a listából, akkor meg kell emelnie magát, amely lelassítja a már alacsony fordulatszámot.
Vászon feltöltése:
- Könnyű integráció az alkalmazásba. Rajz az Ön által elérhető vászon használatával azonnal. Nem kell olyan speciális felületeket létrehozni, amelyeken az OpenGL által létrehozott kép megjelenik. Nem kell létrehoznia egy olyan folyamatot, amelyben az OpenGL működik és szinkronizálja azt a háttérkép szolgáltatással (nagyon nem triviális feladat).
- Könnyű magas szintű API. A vászonok szinte kész rajzfunkcióval rendelkeznek minden alkalommal. 5 percet vesz igénybe az osztály dokumentációjának elolvasásához, és sikeresen használhatja.
Ahhoz, hogy visszajöjjön Canvayba, most beszéljünk egy alternatív megközelítésről.
Opengl
Ha a vászon nem megbirkózik, akkor semmi sem marad.
OpenGL, DirectX – Mindannyian hallottuk ezeket a “hűvös” szavakat. Az Android-on hozzáférhetünk az OpenGL-hez, de nem egyszerű (nem olyan, mint az asztalon), és vágja le. És még van választásunk: OpenGL ES / (mindenhol fut) vagy OpenGL ES (Android +). Mi az ES a címben? ES azt mondja, hogy ez egy vágott változata OpenGL, ahonnan eltávolították mindent több felesleges, hogy api, amennyire csak lehetséges, és nem húzza a dolgokat a mobil eszközök, amelyek könnyen emulálni a központi processzor. Vagyis nem minden példa a szokásos nyitottgl könyvekről, de elvben mindent továbbra is fennáll.
Amint azt az USA-val is megjegyezték: / és olvassa el a Wikipedia különbségeit (válasszon angolul). És nem minden eszköz egyformán támogatja az összes OpenGL ES bővítmények használata előtt néhány, meg kell győződnie arról, hogy pénztárcák meg (itt olvashatunk).
Az OpenGL hátrányai:
- Nehéz integrálni az alkalmazást. Jelenítse meg a grafika és a készülék képernyőjén OpenGL akkor létre kell hozni egy külön felületet és egy különleges patak, hogy levonja ezen a felületen kell felhívni. Szükség van a rendszer és az áramlás szinkronizálására is.
- Összetett alacsony szintű API. Nincs funkciója, hogy rajzoljon egy négyzetet, nincs funkció egy kép megjelenítéséhez. De van egy csomó zászló és rajzolási mód. Ha a mechanizmusok beállítására csúcsainak sokszögek koordinátatranszformálással mátrixok, textúra betöltés funkciók és overlay ellenőrzések … Általában minden nagyon zavaros, ha soha nem foglalkozott OpenGL. Több napig.
Az OpenGL előnyei:
- Magassebesség. Soha ne használja az alkalmazását a vászon segítségével gyorsabban és összetörő, mint az OpenGL (ha van közvetlen keze, természetesen).
- 3D-s támogatás és frills. Háromdimenziós versenyek vagy lövők? Mindez az OpenGL segítségével lehetséges. Hozzon létre fényforrásokat, kezelje a fényképezőgépet, hozzon létre egy reális hatását a vízfelszínre, használjon anyagokat és egyéb.
És mit kell tennie?
Opengl. Könnyebben.
Ha egyedül van – kérjen segítséget.
Egyértelmű, hogy még messze vagyunk az elsők, akik úgy döntöttek, hogy az OpenGL-t, és mindannyian játszottak már szép játékok, vágja el a köteleket, és menti a kötelet tojás. Ritkán, amikor a játékot abszolút a semmiből írják, a motorokat általában használják, hogy minden unalmas osztályt vesznek, és egyszerűbb API-t kínálnak a fantáziáink megvalósításához. És biztosítani kell, ahogyan az élő háttérképre alkalmazzák, könnyebben készíthetők a 2 ..
GlsurfaceView átalakított 3D Live Háttérképek
Ez a zöld cikk neve, ahol az általa létrehozott osztályokról (amelynek fő része GLWallpaperservice), amely elvégzi az összes munkát. Továbbra is írjon egy kódot, amely rajzol. Miután letöltötte a Githubfile Project (a projekt életben és nemrégiben frissül), akkor készen áll a kész háttérképek, amelyek valóban semmit sem csinálnak (csak öntsük az egész háttérszínt), de már dolgoznak. Csak a rajzhoz írhatja a kívánt kódot. A rendszerrel való interakció és az alapkonfigurációjú OpenGL interfésze már gondoskodott. Robert OpenGL /, de nem nehéz eljutni. Érdemes megjegyezni, hogy nincsenek további rajzolási eszközök, amely ugyanazt az OpenGL ES API-t kell felhívnia.
Andengine
Andengine egy igazi 2d motor, amely játékokat hozhat létre. A motor számos bővítményt támogat, amelyek közül a fizika fizika létrehozása. Maga a motor meglehetősen népszerű a nyílt forráskóddal (Java). A motor minden eszköze tapéta létrehozására használható. Számos példa van az egyetlen “dokumentáció” motorra. Ha meg kell tennie valamit – Emlékszem, hogy mely példában láttuk, és megnézzük, hogyan valósul meg ott. Van egy fórum is, ahol segítséget kérhet (a fórum aktív, gyorsan segít).
Most rosszul.
Verzió a motornál 2. Az első (Gles1) az OpenGL ES /, a második (Gles2) – ES API-t használja a Gles2-ben, így jobb, ha jobban használjuk a Gles2-t, de akkor elveszítjük az Android verzió felhasználóit (Gles2 nem működik rajta, és Élő háttérképek figyelemre méltóak). Sikerült futtatnom a háttérképet mind Andengine verzióval. De a Gles1-ben azonnal észrevette a fényképezőgép beállításainak megváltoztatását a képernyő tájolásának megváltoztatásakor (meg kell változtatnia a jelenet skáláját az egyik tengelyen, Gles2 API-ben).
A motor 2D-s játékokhoz jön létre, így az API-t nem biztosítják a 3D támogatására (senki sem tiltja az OpenGL-t közvetlenül használva). Nincsenek látszólag szükséges funkciók, mint egy kör és akár egy háromszög rajzolás. A motor jobban tájékozottabb a Sprite-re. Adjon hozzá egy funkciót ugyanazon a kör rajzolásához, hogy illeszkedjen a motor osztályba, elég nehéz – nincs dokumentáció. Ezért sok kódot kell fordítania, és foglalkoznia kell azzal, amit.
Következtetés.
Elkezdünk következtetéseket levonni abból a tényből, hogy egy példát adok: egy keret által létrehozott vászon által készített háttérképek 17ms-ben készültek a Kindle Fire (6, amelyből “go” és “torz” vászon). Ez sokat, hogy kitöltse a hátteret 16x16px-es textúrával, az XPX képek kimenetével és a különböző vastagságú és sugarú körökkel. Az OpenGL használatakor ez egy nagyságrenddel gyorsabb. Jó: rajzkódot írtam óránként egy kicsit, 17ms egy kicsit sima animáció.
A többiekben.
Használja a CANVA-t, ha nem számít 3D-t, ha az animáció nem nagyon összetett, és nem igényel nagy számítástechnikai erőforrásokat.
Használja Andengine-t, ha 2D háttérképeket készít. Tanulmányozása után a példák és az olvasás a fórum, akkor gyorsan kezdeni az animációt, és további motort bővítmények lehetővé teszi, hogy könnyen végre az animáció. Egyedi megoldások (fizika, részecske rendszer stb.)
Használja a glwallpaperservice robert zöldt. Ha az OpenGL-t jól beszél, és 3D-s háttérképet készít, akkor megengedi Önt, anélkül, hogy zavarná a rutint, gyorsan elkezdi kódolni az animációt.
Ön is alkalmazkodhatsz sok kedvenc grafikus OpenGL motorjaival élő háttérkép létrehozásához. Példaként a GLWALLPAPERService kód és / vagy andengine használata.
Comments are closed, but trackbacks and pingbacks are open.