A kontextuális műveleti mód (Contextual Action Mode) lehetővé teszi, hogy a felhasználó egyszerre több elemet válasszon ki egy ListView-ban, és ezekre közös műveleteket hajtson végre. A működése három alapvető pillérre épül: először is létre kell hozni egy kontextuális menüt, amelyet a mód indításakor felfújunk; másodszor definiálni kell egy MultiChoiceModeListener példányt, amely a ListView többes választási módját kezeli; harmadszor pedig a ListView választási módját CHOICE_MODE_MULTIPLE_MODAL értékre kell állítani, ami aktiválja a kontextuális módot.
A MultiChoiceModeListener ugyanazt a szerepet tölti be, mint a ActionMode.Callback egyetlen elemre vonatkozó műveleti mód esetén, sőt ezt az interfészt valójában implementálja is. A menü az onCreateActionMode() metódus meghívásakor kerül felfújásra. Alapértelmezés szerint a kontextuális mód hosszú érintéssel indul el egy listanézeti elemre, azonban ezt túl korlátozónak tartva, célszerű lehet bővíteni a funkcionalitást úgy, hogy az onItemClick() esemény is kiválthassa az elem kijelölését. Ezáltal már egy egyszerű kattintás is aktiválhatja a módot, ezzel csökkentve a felhasználói bizonytalanságot és fokozva a felfedezhetőséget.
A onActionItemClicked() metódusban kezeljük a kontextuális menü opcióit, például a „Move” vagy „Delete” parancsokat. Ezek hatására megjelenik egy Toast üzenet, majd a műveleti mód befejeződik a mode.finish() hívásával. A onDestroyActionMode() metódus üres marad, ha nincs szükség extra takarításra a mód lezárásakor.
A CAB (Contextual Action Bar) használatához nincs szükség látható Action Bar-ra az Activity-ben. Amennyiben van, a CAB azt ideiglenesen lefedi. Ha nincs, akkor a rendszer automatikusan újrarendereli az elrendezést a CAB megjelenítéséhez, majd visszaállítja azt annak eltüntetésekor. Ez a viselkedés testreszabható az Activity témájának vagy a bázisosztálynak a módosításával, illetve manuális ListView inicializálással.
A felugró menü (PopupMenu) más célt szolgál. Nem a nézet állapotát befolyásolja, hanem az adott komponenshez kötött további opciókat jelenít meg. Egy gyakori példa az e-mail alkalmazások „Válasz” gombja, ahol a lenyitás után a „Válasz”, „Válasz mindenkinek” és „Továbbítás” opciók jelennek meg.
A PopupMenu létrehozása során először egy XML menüdefiníciót készítünk, majd a nézethez kötött ImageButton-re kattintva a menüt felfújjuk. A setOnMenuItemClickListener() segítségével kezeljük a kiválasztott opciókat. Ez az implementáció logikailag hasonlít más menütípusokhoz, de használata során fontos megérteni, hogy a PopupMenu nem helyettesíti a Context Menu vagy Action Mode funkcióját.
A menük típusainak pontos megértése kritikus fontosságú a megfelelő felhasználói élmény biztosításához. A rosszul kiválasztott menütípus megtöri a konzisztenciát, zavaróvá
Hogyan kezeljük a tevékenységek közötti navigációt és adatátvitelt Android alkalmazásokban?
Az Android alkalmazásokban a tevékenységek közötti navigáció kulcsfontosságú a felhasználói élmény szempontjából. Az egyik alapvető művelet az, hogy miként navigálhatunk egyik tevékenységről a másikra, valamint hogyan adhatunk át adatokat a tevékenységek között. Az alábbiakban lépésről lépésre bemutatjuk, hogyan valósíthatjuk meg ezt a gyakorlatban Android Studio használatával.
Első lépésként hozzunk létre egy második tevékenységet. Ehhez nyissuk meg az ActivitySwitcher projektet, majd navigáljunk a File | New | Activity | Blank Activity menüpontra. A Customize the Activity párbeszédpanelen az alapértelmezett Activity nevet, ami "Main2Activity", hagyhatjuk változatlanul, vagy átnevezhetjük "SecondActivity"-re. Az új tevékenység létrehozása után, nyissuk meg a MainActivity.java fájlt, és adjuk hozzá az alábbi kódot:
Ez a kód egy új Intent objektumot hoz létre, amely a második tevékenységet indítja el. Ez a művelet lényegében megnyitja a második Activity-t az alkalmazásban.
Ezután szükség lesz egy gombra is, amely elindítja ezt a műveletet. Ehhez nyissuk meg az activity_main.xml fájlt, és adjuk hozzá a következő XML kódot a megfelelő helyre:
Most futtathatjuk az alkalmazást, és láthatjuk, hogy a második tevékenység elindul. Azonban sok esetben szükség van arra, hogy a második Activity-ből visszatérjünk az elsőhöz. Ehhez adjunk hozzá egy "Close" gombot a SecondActivity-hez. A második tevékenység SecondActivity.java fájljában adjuk hozzá az alábbi kódot:
Ez a kód lezárja a második tevékenységet, és visszatérünk az elsőhöz, miközben a rendszer a tevékenységek hátsó veremkezelését (back stack) használja. Fontos megjegyezni, hogy a finish() nem biztosít visszatérést egy konkrét tevékenységhez, hanem egyszerűen bezárja a jelenlegi tevékenységet.
Most vegyük hozzá a "Close" gombot a activity_second.xml fájlhoz:
Ezután az alkalmazásban a két gomb segítségével válthatunk a két tevékenység között, és le is zárhatjuk a másodikat.
A második tevékenység elindítása alapvető művelet az Android alkalmazásokban, és ez képezi az egyik legfontosabb alappillért szinte minden alkalmazásban. Az Intent objektumok, amelyeket a tevékenységek közötti kommunikációra használunk, rendkívül fontos szerepet játszanak abban, hogy az alkalmazás különböző részei adatokat osszanak meg egymással.
A második tevékenység indításán túl, nagyon gyakori szükség van arra, hogy adatokat küldjünk az egyik tevékenységről a másikra. Ezt az Intent segítségével tehetjük meg. Vegyük például a következő esetet: ha szeretnénk egy szöveget átadni az első tevékenységről a másodikra, akkor az alábbi lépéseket követhetjük:
-
Nyissuk meg az activity_main.xml fájlt, távolítsuk el az előző Button elemet, és adjunk hozzá egy EditText elemet, amelybe a felhasználó beírhatja a kívánt szöveget.
-
A MainActivity.java fájlban módosítsuk az onClickSwitchActivity() metódust az alábbi módon:
Ez a kód a felhasználó által beírt szöveget továbbítja a második tevékenység számára.
-
A második tevékenység activity_second.xml fájljában biztosítsuk, hogy a megfelelő TextView elem rendelkezzen azonosítóval, hogy megjeleníthessük az átadott adatot.
-
A SecondActivity.java fájlban módosítsuk az onCreate() metódust a következőképpen:
Ez a kód fogadja az adatot, és megjeleníti azt a második tevékenységben.
Fontos megjegyezni, hogy az Intent nem csupán szöveges adatokat képes átvitt, hanem sokféle más adatot is kezelni tud, például számokat, logikai értékeket, vagy akár objektumokat is, ha azok megfelelően vannak sorosítva. Ezáltal az Intent rendkívül rugalmas és erőteljes eszköz, amely lehetővé teszi az alkalmazások számára, hogy különböző komponensek között adatokat küldjenek és fogadjanak.
A navigáció és az adatátvitel kulcsfontosságúak, mivel ezek határozzák meg az alkalmazások működését és interaktivitását. Ahhoz, hogy az alkalmazásunk jól működjön és élvezetes felhasználói élményt nyújtson, elengedhetetlen, hogy megfelelően kezeljük ezeket a műveleteket.
Hogyan működik a geofencing Android alkalmazásban?
A geofencing egy olyan technológia, amely lehetővé teszi egy eszköz számára, hogy érzékelje, amikor egy felhasználó belép egy meghatározott földrajzi területre vagy elhagyja azt. Ez a funkció különböző mobilalkalmazások számára nyújt lehetőséget, hogy valós idejű helymeghatározás alapján értesítéseket küldjenek a felhasználóknak, vagy különböző eseményeket indítsanak el. A geofencing beállítása Android alkalmazásokban a Google Play Services Location API segítségével történik. Az alábbiakban bemutatjuk a geofencing beállításának és használatának lépéseit Android alkalmazásban.
Első lépésként hozzá kell adni a szükséges engedélyeket az alkalmazás manifest fájljához. A geofencinghez elengedhetetlen az ACCESS_FINE_LOCATION engedély, mivel a felhasználó tartózkodási helyét kell meghatározni. Miután ez megtörtént, a következő lépés a GoogleApiClient objektum létrehozása és csatlakoztatása. Az onConnected() metódusban a Geofencing API beállítható, így lehetővé válik a geofenceshez kapcsolódó műveletek végrehajtása.
A geofencing beállításához három kulcsfontosságú objektumra van szükség: a GoogleApiClient, a Geofence Request és a Pending Intent. A GoogleApiClient már előre létre lett hozva, és el van mentve a mGoogleApiClient változóba. A következő lépésben létre kell hozni a GeofencingRequest objektumot, amely tartalmazza a geofences listáját. A geofences lista a createGeofenceList() metódusban kerül meghatározásra. Ez a metódus egy ArrayList<Geofence> típusú listát ad vissza, amely tartalmazza azokat a geofence objektumokat, amelyek alapján a helyzetváltozások detektálhatók. Minden geofence objektumnak szüksége van egy egyedi azonosítóra (setRequestId()), valamint a földrajzi hely koordinátáira (setCircularRegion()). A geofencing beállítások között szerepel még az eltűnési idő (setExpirationDuration()), valamint a különböző eseménytípusok, például a belépés és kilépés érzékelésére szolgáló átmenetek (setTransitionTypes()).
Miután a geofences lista és a geofencing kérés összeálltak, szükség van egy PendingIntent objektumra is. Ez az objektum a rendszer számára biztosítja, hogy értesítést küldjön az alkalmazásnak, amikor a felhasználó belép vagy kilép a meghatározott területről. A PendingIntent általában egy szerviz hívást jelent, amely a GeofenceIntentService osztályban kerül feldolgozásra.
A GeofencingRequest létrehozása után már csak a LocationServices.GeofencingApi.addGeofences() metódust kell meghívni a geofencing műveletek végrehajtásához. A geofences listát és a PendingIntent-et átadva a rendszer elkezdi monitorozni a geofences eseményeket, és az alkalmazás értesítést küldhet a felhasználónak, ha azok teljesülnek.
Fontos megjegyezni, hogy a geofencing szolgáltatás használatakor a Loitering Delay és a Transition Types megfelelő beállítása kulcsfontosságú. A Loitering Delay azt jelzi, hogy a rendszer mennyi idő után jelezzen, ha a felhasználó egy geofences területen tartózkodik, míg a Transition Types lehetővé teszi a belépés (ENTER), kilépés (EXIT) és tartózkodás (DWELL) típusú események figyelését. A DWELL típus különösen fontos, ha a felhasználó hosszabb ideig marad egy adott helyszínen, és az alkalmazásnak értesítést kell küldenie neki.
Ha a felhasználó már nem kíván értesítéseket kapni, akkor a LocationServices.GeofencingApi.removeGeofences() metódus segítségével eltávolíthatjuk a geofences figyelést. Ez a metódus vagy a geofences azonosítóját, vagy a PendingIntent-et használja a geofences eltávolításához.
A geofencing megfelelő beállítása tehát nem csupán a helymeghatározás pontos használatát teszi lehetővé, hanem az alkalmazás funkcionalitását is jelentősen bővítheti. Az értesítések és az automatikusan indított műveletek révén a felhasználói élmény még interaktívabbá válik, ami a modern alkalmazások elengedhetetlen jellemzője.
Miért fontos a biztonságos rendszerkonfiguráció az Active Directory-ban?
Miért nem volt sikeres a Szegénység elleni háború az Egyesült Államokban?
Hogyan gyorsíthatjuk a fejlesztői termelékenységet az Angular új lehetőségeivel?
Hogyan fejlesszük nyelvtudásunkat: A megfelelő eszközök használata

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский