Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet



Hasonló dokumentumok
Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

Concurrency in Swing

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

I. 288.: Utcai WiFi térkép

Alap számológép alkalmazás

Szoftvertechnológia alapjai Java előadások

Optimalizálás Hatékony alkalmazás Androidra

libgdx alapok, első alkalmazás


















Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

FELHASZNÁLÓI KÉZIKÖNYV 1.sz. melléklet

Programozási nyelvek Java

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Google Maps használata OSM, mint alternatív térkép

Android 5.0.

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

HyperMedia Center egy olyan integrált multimedia alkalmazás, mely. lehetővé teszi a felhasználók számára az összes digitális szórakoztató

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Programozási nyelvek és módszerek Java Thread-ek

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

8,0 MP hátlapi, LED vakuval. - micro SD kártyaolvasó - 1db USB 2.0 a táblagépen - 2db USB 2.0 a billentyűzeten. - fényérzékelő - giroszkóp

ANDROID ALKALMAZÁSFEJLESZTÉS

JAVA PROGRAMOZÁS 3.ELŐADÁS

Broadcast Service Widget

Objektumorientált programozás C# nyelven III.

Magas szintű programozási nyelvek 2 Előadás jegyzet

3. Gyakorlat Ismerkedés a Java nyelvvel

Algoritmusok és adatszerkezetek II.

ANDROID 2.3 TÁBLAGÉP KEZELÉSI ÚTMUTATÓ

A táblaszámítógép bemutatása

MKB. Mobil NetBANKár. Mobil eszköz és böngészı beállítások

T-Systems Magyarország Zrt. készülék árlista vállalati Ügyfelei számára. Érvényes: november 2-tól visszavonásig vagy a készlet erejéig

libgdx alapú program létrehozása, kép importálása, mozgatása libgdx alapok Android játékfejlesztés Soós András

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java felhasználói felület

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Programozási nyelvek Java

Java Programozás 11. Ea: MVC modell

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Ft Ft Ft Ft Ft Ft Ft Ft

Alcor Access Q913M Táblagép. Kezelési útmutató

Programozás I. Első ZH segédlet

Java Programozás 3. Gy: Java GUI. Swing, AWT

Google Maps V2. OpenStreetMap, Mapsforge

117. AA Megoldó Alfréd AA 117.

Tartalomjegyzék. Áttekintés A mobil kliens első ránézésre. Fő nézetek A kezelőfelület elemei Első lépések

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

2048 3D. Csapatnév: kurkomisi. Név: Kurkó Mihály-Zsolt. Elérhetőség: telefon: Iskola: Márton Áron Gimnázium

Szoftvertechnolo gia gyakorlat

Konkurens TCP Szerver

ANDROID ALKALMAZÁSFEJLESZTÉS

Programozási nyelvek Java

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Point of View Android 2.3 Tablet Kézikönyv PlayTab 2 / ProTab 2

Szoftvertechnológia alapjai Java előadások

OOP: Java 4.Gy: Java osztályok

Az új be- és kimenet könyvtár

Nokia C Felhasználói kézikönyv

Figyelmeztetések. 04 Alcor Joy Kezelési Útmutató

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

C++ programozási nyelv

Objektumorientált programozás C# nyelven

Biztonság Felhasználói kézikönyv

eseményvezérelt megoldások Vizuális programozás 5. előadás

Mobilforradalom: a kijelzők világa. Írta: László Ferenc október 16. szerda, 14:50

Adattárolás Szenzorok

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Általános áttekintés. A módszer lényege

Fejlesztői szemmel at K

Használati útmutató. Interaktív Bluetooth R / C Távirányító új dimenziója. Kompatibilis az Android rendszerrel.

H Wake-up light Használati útmutató

Programozás II gyakorlat. 4. Öröklődés

SM-T810. Felhasználói kézikönyv

Nokia C Felhasználói kézikönyv

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

C# osztályok. Krizsán Zoltán

Köszönjük, hogy az Axiomet AX-3004H kapcsolóüzemű DC Tápegységet választotta, kérjük használat előtt figyelmesen olvassa el az útmutatót.

Mobil Informatikai Rendszerek

ANDROID ALKALMAZÁSFEJLESZTÉS

Mobil készülékek programozása

Felhasználói kézikönyv

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Átírás:

OE-NIK 2011. szeptember 27. Sicz-Mesziár János sicz-mesziar.janos@ nik.uni-obuda.hu Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

Szálkezelés A fő szál az UI szál, ami automatikusan létrejön. Egyes folyamatok lassúak és bizonytalanok. pl.: hálózati forgalom adatbázis lekérések Legyen egy másik szál: background (worker) thread Például: public void onclick(view v) { new Thread(new Runnable() { public void run() { Bitmap b = loadimagefromnetwork(); mimageview.setimagebitmap(b); ).start(); UI szálban a folyamatok fennakadnak! Ha kb. 5mp-ig nem válaszol: application not responding dialógus megjelenik. De ez sem jó! Cross-thread probléma: háttérszál manipulálja az UI szálat. Nem thread-safe megoldás! 2

Szálkezelés a gyakorlatban (2) Küldjünk értesítést az UI elemnek. Így amint biztonságos állapotba kerül az UI szál lefuttatja a grafikai felületet érintő módosításokat. public void onclick(view v) { new Thread(new Runnable() { public void run() { final Bitmap b = loadimagefromnetwork(); mimageview.post(new Runnable() { public void run() { mimageview.setimagebitmap(b); ); ).start(); Vagy: class MyThread extends Thread{ Alternatívák: postdelayed, Activity.runOnUiThread, Handler, AsyncTask 3

Rajzolás a képernyőre A klasszikus 2D rajzolás Canvas-en történik. A Canvas eredhet például: Bitmap-ből, vagy egy View leszármazott ondraw() implementálásából Erre a célra kialakított felület: SurfaceView Példa: public class Rajzpapir extends View{ protected void ondraw(canvas canvas) { super.ondraw(canvas); canvas.save(); Paint p = new Paint(); p.setcolor(color.red); canvas.drawcircle(0, 0, 50, p); canvas.restore(); OpenGL ES: hardveres gyorsítás, 2D és 3D grafika. 4

Érintő képernyő (touchscreen) Két technikai megoldás jellemző a piacon: Rezisztív Kapacitív Ellenállás mechanikai megváltozása. (lassabb) Meghatározható az érintés időtartama, erőssége, irányvektora. Ütésre érzékeny, elektromos hatásra érzéketlen. Forrás, nagyon jó leírással: http://www.seria.hu/cikkeink/rezisztiv%20vs%20kapacitiv/ 03%20resz/Rezisztiv%20vs%20kapacitiv%203.html Referencia töltéstől való eltérés. (gyorsabb) Érintések száma, terület nagysága, időtartama, irányvektora, Elektromos hatásra érzékeny, páratartalomra, hőre kevésbé. Forrás: http://www.seria.hu/cikkeink/rezisztiv%20vs%20kapacitiv/ 04%20resz/Rezisztiv%20vs%20kapacitiv%204.html 5

Touchscreen kezelése Jó lenne információ az érintésről. Pl.: X, Y koordináta Adott UI elem érintésekor az egész kijelző felület a mienk Nem csak az adott UI elem méretére! 3 tipikus állapotról v. eseményről beszélhetünk: DOWN : rátesszük az ujjunkat, azaz első érintés MOVE : folyamatos mozgatás UP : felemeljük az ujjunkat Megvalósítás: main.setontouchlistener(new View.OnTouchListener() { public boolean ontouch(view v, MotionEvent e) { if(e.getaction() == MotionEvent.ACTION_MOVE){ float x = e.getx(); float y = e.gety(); ); 6

Több ujjas érintés (multitouch) Android API elvben 250 ujjat képes kezelni egyszerre. De limitált => gyártófüggő. Pl.: HTC Desire 2 ujj Samsung Galaxy S 5 ujj HTC Evo 5 ujj Emulátor 1 ujj Tablet? ujj Kód szinten: for(byte i=0; i<event.getpointercount(); i++){ float x = event.getx(i); float y = event.gety(i); // int id = event.getpointerid(i); // int ind = event.findpointerindex(pointerid); Bővebb leírás: http://android-developers.blogspot.com/2010/06/making-sense-ofmultitouch.html 7

Gesztusok kezelése GesutreDetector: Egy ujjas gesztusok kezelése, mint: scrolling, flinging, long press ScaleGestureDetector: (Android 2.2 óta!) Két ujjas gesztusok kezelése, mint: pinch zooming 1. Megvalósítunk egy OnGestureListener-t: OnGestureListener gestlistener = new OnGestureListener(){ onfling() onscroll() 2. GestureDetector példányosít: GestureDetector gd = new GestureDetector(context, gestlistener); 3. ontouchevent() esemény átadása: public boolean ontouch(view v, MotionEvent event) { gd.ontouchevent(event); 8

Billentyűzet és gombok Hardveres és szoftveres billentyűzet is lehet: onkeydown(), onkeyup(), onkeylongpress(), D-pad (direction-pad) : 4-5 irányú gomb, kezelése szintén a fenti metódussokkal. Ha ontrackballevent() metódust nem valósítjuk meg, akkor az Android átfordítja D-pad eseményre! Speciális gombok is felüldefiniálhatóak: Hangerő gomb, Menü gomb, Vissza gomb Gyakorlatban: public boolean onkeydown(int keycode, KeyEvent event) { switch(keycode){ case KeyEvent.KEYCODE_DPAD_CENTER: if(event.getaction() == KeyEvent.ACTION_DOWN){ Log.d("NIK", "D-PAD középső enter gomb."); return true; default: return super.onkeydown(keycode, event); 9

10