[WM/MonoTouch] Vingervriendelijke GUI

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Gimmeabrake
  • Registratie: December 2008
  • Laatst online: 23-08 10:45
Vorig jaar heb ik voor mijn profielwerkstuk op de middelbare school een grafisch rekenmachine geprogrammeerd in vb.net. Dat ben ik nog steeds aan het ontwikkelen (klik voor een filmpje), maar doordat ik laatst een HTC HD2 heb aangeschaft, kwam ik op het idee om het programma naar Windows Mobile te porten. Bovendien kwam door MonoTouch het idee om daar later een iPhone port aan toe te voegen.

De WM applicatie wordt in VB.Net of C# geschreven, mijn probleem is echter de GUI. Zoals de meesten wel zullen weten gaan de resoluties bij windows mobile toestellen omhoog, zijn de toestellen met een resistief scherm steeds beter geschikt voor gebruik met vingers, vervangt HTC het home-scherm met zijn eigen vinger-vriendelijke software (HTC TouchFlo/Sense) waardoor de stylus overbodig wordt en is het capacitieve scherm in de opmars. Gevolg: de controls van de Windows Mobile-sdk zijn niet erg geschikt voor gebruik met de vingers. Nu heb ik wat zitten googlen, en kwam ik 3 kant-en-klare opties tegen:
- Resco MobileForms Toolkit
- Mirabyte Touch Controls Suite
- Touch UI

Echter voldoet geen van de 3 echt aan mijn eisen. Opties 1 en 2 vallen om financiële(ben maar een arme student) en principiële(wil het programma evt. open source maken) redenen af. Optie 3 vind ik te omslachtig opgebouwd en een beetje cheap en buggy aanvoelen. Ook heeft geen van de 3 versies een iPhone counterpart, waardoor het porten ook omslachtiger zou worden.

Op dat moment realiseerde ik me dat het er op neer zou komen dat ik zelf iets in elkaar zou moeten frutselen. Een bijkomend voordeel is dat ik het gebruiksgemak van mijn applicatie aanzienlijk kan verhogen: ik kan voor de invoer van functies een op wiskunde uitgelegde toetsenbord layout op het scherm toveren, zodat de gebruiker niet de hele tijd moet switchen tussen de twee toetsenbord-modi bij het typen van een functie.

Nou zit ik met een tweetal vragen waar ik niet helemaal uit kom:

1) Hoe bouw ik zo'n toetsenbord op? Het tekenen doe ik in GDI+/het MonoTouch equivalent en dat zal ook wel lukken, maar hoe herken ik efficiënt wanneer een user op een bepaalde toets drukt? Maak ik van elke toets een object dat de eigen coördinaten onthoudt, en loop ik bij een "MouseClick" event alle objecten af om te kijken of de muis-coördinaten in een van de objecten valt? Of zal dit voor performance-problemen zorgen en is een minder object georiënteerde aanpak met een 2d-array sneller/beter? Zijn er evt. andere datastructuren die ik over het hoofd zie?

2) Hoe zorg ik dat ik dat toetsenbord zonder al te veel moeite kan porten naar MonoTouch? Ik weet dat mijn parser compatible is met Mono, maar ik wil buiten de parser natuurlijk ook zo weinig moeten herschrijven en zoveel mogelijk code voor beide versies centraal kunnen beheren.
Zelf dacht ik eraan om een interface te bouwen voor een soort graphics-wrapper-class, en daar vervolgens 2 implementaties van te schrijven, een voor WM en een voor de iPhone. Dan kan ik voor het event-handling, het genereren van de bitmap en het parsen in beide versies dezelfde library gebruiken. Ik heb echter 0 ervaring met cross-platform development, dus alle feedback hierop is welkom.