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

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

Concurrency in Swing

Alap számológép alkalmazás

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

Szoftvertechnológia alapjai Java előadások

libgdx alapok, első alkalmazás

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

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

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


















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

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

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

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

Programozási nyelvek Java

Algoritmusok és adatszerkezetek II.

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

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 Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

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

A Measy A2W Miracast Stick bemutatása. A Measy A2W Miracast Stick jellemzői

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

Android 5.0.

Broadcast Service Widget

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ó

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

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

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

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

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

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

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

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

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

OPEL INSIGNIA Infotainment kézikönyv

Nokia Felhasználói kézikönyv

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

ANDROID ALKALMAZÁSFEJLESZTÉS

Nokia C1-01/C Felhasználói kézikönyv

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

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

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

Programozási nyelvek Java

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

Objektumorientált programozás C# nyelven III.

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

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

3. Gyakorlat Ismerkedés a Java nyelvvel

Java Programozás 11. Ea: MVC modell

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

Készítette:

Google Maps V2. OpenStreetMap, Mapsforge

Használati útmutató. Biztonsági előírások. Tartalom. Szimbólumok. A műszer felhasználási célja. Tiltott használat. magyar. Biztonsági előírások

libgdx Android Studio alatt

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

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

Felhasználói kézikönyv

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

ANDROID ALKALMAZÁSFEJLESZTÉS

Programozási nyelvek Java

Konkurens TCP Szerver

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

Java felhasználói felület

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

GYORSINDÍTÁSI ÚTMUTATÓ QSMM66V45HU0514SO

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

Köszönjük, hogy a ConCorde-6025CID telefonkészüléket választotta. A készülék használata előtt kérjük figyelmesen olvassa el a használati útmutatót.

BlackBerry Torch 9800 Smartphone

Ft Ft Ft Ft Ft Ft Ft Ft

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

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.

HTC Desire 620. Felhasználói kézikönyv

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

Intuos Pro magyar nyelvű használati útmutató

Nokia Felhasználói kézikönyv

Programozás I. Első ZH segédlet

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

1 Újdonságok a 3D szerkesztő módban

Felhasználói kézikönyv

117. AA Megoldó Alfréd AA 117.

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:

Informatika. Középszintű érettségi vizsga témakörök. 1. Információs társadalom. 2. Informatikai alapismeretek hardver

Átírás:

Sicz-Mesziár János sicz.mj@gmail.com 2011. március 17. OE-NIK 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

Választható feladatok! Puzzle játék Rajzoló program Érintő képernyő kezelése Billentyűzet kezelés Rajzolás képernyőre 10

Kirakós Puzzle játék Egy képet töltsünk be (fájlból) és daraboljuk fel 3x3- as darabokra. (tipp: Bitmap.createBitmap( )) A létrejött darabokat véletlenszerűen helyezzük el a képernyőn. A képdarabokat érintéssel mozgatni lehessen. A játék akkor ér véget ha az összes darab a helyére került. Segítség: Adott cella bal felső sarkában egy kis terület legyen már helyére igazított. Pl. első cella: X<5 X=0 és Y<5 Y=0 Ajánlott egy olyan osztály létrehozása, ami leírja az adott darabkát (x, y, w, h, ) 11

Rajzoló program Egy nagyon egyszerű rajzoló program elkészítése. Az érintő képernyőn az érintés vonala rajzolódjon ki, tehát legyen képes vonalakat rajzolni. A következő beállítási lehetőségek legyenek: Vonal vastagsága Vonal színe Vonal helyett lehessen alakzatokat is hozzáadni, mint: Kör Téglalap Az elkészült képet menüből elérve le tudjuk menteni. Opcionális: a műveletek visszavonhatóak legyenek! 12