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

Hasonló dokumentumok
ANDROID ALKALMAZÁSFEJLESZTÉS

ANDROID ALKALMAZÁSFEJLESZTÉS

Broadcast Service Widget

Android Wear programozás. Nyitrai István

ANDROID ALKALMAZÁSFEJLESZTÉS

ANDROID ALKALMAZÁSFEJLESZTÉS

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

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Alap számológép alkalmazás

Újdonságok a Google műhelyéből. Péter Ekler


UI megismerése, különböző felbontások támogatása, használati jogok kérése

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

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

ANDROID ALKALMAZÁSFEJLESZTÉS

Mobil Informatikai Rendszerek

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Programozási nyelvek Java

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

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

ANDROID ALKALMAZÁSFEJLESZTÉS

Mobil Informatikai Rendszerek

ANDROID ALKALMAZÁSFEJLESZTÉS

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

Google Maps V2. OpenStreetMap, Mapsforge

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Algoritmusok és adatszerkezetek II.

Mobil Informatikai Rendszerek

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

Java Programozás 11. Ea: MVC modell

ANDROID ALKALMAZÁSFEJLESZTÉS

Programozási nyelvek Java

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

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

RIA Rich Internet Application

Osztályok. 4. gyakorlat

Szoftvertechnológia alapjai Java előadások

Java és web programozás

Programozási nyelvek Java

UI megismerése - 2. rész Adattárolás

Felhasználói felület megismerése, különböző felbontások támogatása

Mobil Informatikai Rendszerek

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

Abstract osztályok és interface-ek. 7-dik gyakorlat

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

ZH mintapélda. Feladat. Felület

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

libgdx alapok, első alkalmazás

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

Adattárolás Szenzorok

C#, OOP. Osztályok tervezése C#-ban

JAVA PROGRAMOZÁS 3.ELŐADÁS

Programozási nyelvek Java

JAVA PROGRAMOZÁS 2.ELŐADÁS

Access adatbázis elérése OLE DB-n keresztül

3. Egyszerű komponensek

OOP: Java 8.Gy: Abstract osztályok, interfészek

Szoftvertechnológia alapjai Java előadások

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Android fejlesztés Alapok. Készítette: Kálmán Kornél (KAKQAAT.SZE)

Konkurens TCP Szerver

Mobil Informatikai Rendszerek

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

Bevezető. Servlet alapgondolatok

és az instanceof operátor

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Szenzorok megismerése Érzékelők használata

3. Gyakorlat Ismerkedés a Java nyelvvel

Java programozási nyelv 4. rész Osztályok II.

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

Programozás C++ -ban 2007/4

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

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Android 5.0.

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

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Android fejlesztés Alapok. Tanács Attila, Kálmán Kornél

Adatbázisok webalkalmazásokban

Programozási nyelvek II.: JAVA, 4. gyakorlat

Java programozási nyelv 5. rész Osztályok III.

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Elemi Alkalmazások Fejlesztése II.

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Java II. I A Java programozási nyelv alapelemei

Java és web programozás

Szoftverfejlesztés a Google Android OS-re (Android 3.0, API level 11)

Programozás I. Első ZH segédlet

Informatika terméktervezőknek

Concurrency in Swing

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Segédanyag: Java alkalmazások gyakorlat



Átírás:

ANDROID ALKALMAZÁSFEJLESZTÉS Android komponensek használata Activity Fragment Service Broadcast Recevier sicz- m e s z i a r. j a n o s @ n i k. u n i - o b u d a. h u Sicz-Mesziár János 2015. március 2.

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

Application 3 Az alkalmazást írja le, mely az alábbi főbb komponenseket tartalmazhatja: Activity Service Broadcast Receiver Fontosabb paraméterek: Icon az alkalmazás ikonja, ez jelenik meg a Launcher-en is Label az alkalmazás neve HardwareAccelerated hardveres gyorsítás engedélyezése Theme az alkalmazásra kiterjedő stílus Large heap alkalmazás által használható maximális memóriaméret ideiglenes megemelése ha szükséges további paraméterek

Activity 4 Leírja, hogy hogyan működjön egy felhasználói felület, azaz ez tölti be a kontroller szerepét. Saját életciklusa van. Fontosabb működést befolyásoló paraméterek: icon az adott activity ikonja, például a recent apps -ban ez látszik label adott activity megnevezése hardwareaccelerated hardveres gyorsítás engedélyezése activity-n belül screenorientation portrai, landscape, reverselandscape, sensor, configchanges fejlesztő kezel bizonyos változásokat: orientation, screensize launchmode activity példány működés windowsoftinputmode billentyűzet beállítások theme Activity-re alkalmazott stílus fájl, például nowindowtitle exported Activity elindítható third-party applikáció által is

Új Activity indítása 5 Új Activity hozzáadása: [package] > jobb klikk > New > Activity Új Activity hozzáadása kézzel: Layout XML (res/layout/uj_activity.xml) Activity leszármaztatása (src/[package] /UjActivity.java) AndroidManifest.xml-ben felvenni Új Activity indítása Intent masikactivity = new Intent(this, Masik.class); startactivity(masikactivity);

Paraméterek átadása 6 Primitívek átadása Activity-nek Intent masikactivity = new Intent(this, Masik.class); masikactivity.putextra("szam", 100); masikactivity.putextra("key", "érték"); startactivity(masikactivity); Primitívek integer, double, float, string, boolean, byte, short, char Átadott paraméterek elérése protected void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate); int szam = getintent().getextras().getint("szam", 0); String kulcs = getintent().getextras().getstring("key", null);

Paraméterek átadása (2) Parcelable 7 public class MyModel implements Parcelable { private String name; private int value; public MyModel(String name, int value) { Összetett objektum átadása paraméterként. public MyModel(Parcel parcel){ this.name = parcel.readstring(); this.value = parcel.readint(); public void writetoparcel(parcel parcel, int i) { parcel.writestring(name); parcel.writeint(value); public static final Creator<MyModel> CREATOR = new Creator<MyModel>() { public MyModel createfromparcel(parcel parcel) { return new MyModel(parcel); ;

Paraméterek átadása (2) Visszatérés 8 Activity indítása visszatérési értékre várva Context.startActivityForResult(Intent i, int requestcode); Visszatérési érték meghatározása setresult(result_ok, new Intent()); Visszatérési érték levétele public class MainActivity extends Activity { protected void onactivityresult(int requestcode, int resultcode, Intent data) { data.getintextra("kulcs", -1); super.onactivityresult(requestcode, resultcode, data);

Service 9 Egy alkalmazás komponens: hosszan futó műveletek végrehajtása háttérben fut, nincs UI Két formája van: Started Nem külön szálon fut! Nem egy külön folyamat! egy komponens (pl.: Activity) elindítja a startservice() eljárással Végtelenségig fut, akkor is ha az őt elindító komponens megsemmisül. (Nincs visszatérési érték) stopservice() Általában egy műveletet hajt végre, majd megsemmisíti magát. Pl.: letöltés / feltöltés az internet irányába Bound Egy komponens bindservice()-al kötődik Kliens-szerver felület a komponens és service között (request, results, ) Addig fut amíg az összeköttetés él. (Pl.: zenelejátszás)

Service (2) 10 startservice() bindservice() stopself() stopservice() unbindservice() Clean up:threads, listeners, receivers

Broadcast Receiver 11 Aszinkron, üzenetszórásos értesítés, azok akik felregisztráltak rá értesülnek róla Két fő csoport: Normal broadcast teljesen aszinkron, véletlen sorrend Hatékonyabb, de korlátok: nincs visszatérési érték, visszavonás Ordered broadcast egyszerre csak egy receiver fut visszavonható abort Prioritásokat adhatunk (android:priority) onreceive() csak egyszer fut le - rövid életű Hosszan futó műveletekre alkalmatlan (timeout ~10sec)

Broadcast Receiver a gyakorlatban 12 Regisztrálás statikusan BroadcastReceiver osztály implementálása AndroidManifest.xml-ben <receiver> megadása Regisztrálás dinamikusan, futási időben BroadcastReceiver osztály implementálása Context.registerReceiver()-el regisztálunk onresume() Context.unregisterReceiver() leiratkozunk onpause() private BroadcastReceiver mbatinforeceiver = new BroadcastReceiver(){ public void onreceive(context context, Intent intent){ int level = intent.getintextra("level",0); contenttxt.settext("" + level + %"); ; Broadcast kibocsátás Context.sendBroadcast(Intent intent)

Fragments

14 Activity moduláris része, saját életciklussal: Ha egy Activity pause állapotba kerül akkor az összes benne lévő Fragment is! Függetlenül manipulálható: futás időben hozzáadható, elvehető, back stack -be tehető. Layout-on bárhol elhelyezhető. Lásd Google IO 2012 App demo Android 3.0 (API level 11) óta érhető el Android 1.6-tól is használható Support Library segítségével.

Fragment a gyakorlatban 15 public class MyListFragment extends Fragment { public View oncreateview( LayoutInflater inflater, ViewGroup container, Bundle savedinstancestate) { View v = inflater.inflate( R.layout.list_fragment, container, false); return v; Fragment kinézetét leíró XML

Fragment betöltése Fragment betöltése futás időben 16 private void loadfragment(){ FragmentManager fm = getsupportfragmentmanager(); FragmentTransaction ft = fm.begintransaction(); ft.settransition(fragmenttransaction.transit_fragment_fade); ft.addtobackstack(mylistfragment.class.getname()); ft.replace(r.id.container_place, new MyListFragment()); // ft.add(r.id.container_place, new MyListFragment()); // ft.remove(fragment ); // ft.hide(fragment ); ft.commit();

Backstack 17 Hasonló az alkalmazás stack-hez Fragment váltások előzményeit tartalmazza Vissza gomb (back) esetén automatikusan betölti az előző fragmentet Ennek állapota lekérdezhető: getbackstackentryat(int index) getbackstackentrycount() popbackstack() addonbackstackchangedlistener( OnBackStackChangedListener listener)