Hirdetés

Alkalmazásfejlesztés badára: Többpontos érintésérzékelés

Az előző bejegyzésben az egy pontos érintések kezelését implementálását tárgyaltuk ki, ma viszont továbbmegyünk és megnézzük, hogyan érzékelhetünk egyszerre több érintést.

A Samsung Wave érintésérzékelő chipje hat tapogatást tud egyszerre kezelni, bár ennyivel egyszerre nem érdemes foglalkozni, lévén a képernyő mérete túl kicsi ahhoz, hogy kényelmesen használható legyen a dolog. A két, esetleg három pontos multitouch implementálása viszont hasznos dolog, egy jó koncepció sokat dobhat az alkalmazásunk kezelhetőségén; ilyen például az úgynevezett pinch to zoom, azaz a kétujjas nagyítás és kicsinyítés.

Kód szinten ez a következőképpen néz ki: először is implementálnunk kell az Osp::Ui::ITouchEventListener interfészt, amely hat függvény megírását vonja maga után; eddig még nincsen semmi újdonság, ezt az előző posztban is megtettük. A programunk inicializáló szakaszában engedélyeznünk kell a multitouch-ot, ezt a listener hozzáadása után tehetjük meg:

Touch touch;
touch.SetMultipointEnabled(*this, true);

Ezzel az alkalmazásunk képessé vált a többpontos érintések érzékelésére, most már csak le kell kezelnünk azokat. Az érintési pontokat bármikor lekérhetjük, viszont értelemszerűen a tapi-kezelő függvényekben érdemes ezt megtenni. Egy Touch példány GetTouchInfoListN(source) függvényét kell meghívnunk, ahol a source egy referencia arra a vezérlőre, amely az érintést érzékelte. Ez a függvény egy IList típusú listát ad vissza, amelyben az érintések adatait TouchInfo példányok reprezentálják, szám szerint pontosan annyi, ahány tapogatást érzékelt a telefon (ez maximum hat darab lehet); innen pedig sínen vagyunk, az értékeket szabadon felhasználhatjuk a programunkban.

A multitouch-képes alkalmazásunk teszteléséhez ráadásul nincsen szükség badás telefonra, mivel az emulátor is képes a dologra. A procedúra kissé kacifántos: a tapintásokat a CTRL billentyű lenyomva tartása mellett tudjuk bevinni, ezeket ekkor szürke körök jelzik a képernyőn. A mozgatást pedig a shift gomb nyomva tartásával szimulálhatjuk.

dr. Kind

Azóta történt

Előzmények