ITI0011:Kimp (Android)
Tagasi ITI0011 lehele.
English version of this homework: ITI0011:Kimp homework (TODO).
Üldine
Üldfunktsionaalsus ei muutu.
Tähtaeg: kood tuleb laadida git'i hiljemalt pühapäeval, 16. novembril kell 23:59.
Kaitsmine: 18. või 20. november (vastavalt rühma tunnile)
Enne seda nädalat kaitsmine annab +1 lisapunkti. Eeldus on, et kood on git'i laetud enne kaitsmist.
Tuleb kirjutada graafilise kasutajaliidesega joonistamisprogramm Androidi peale. Programm võimaldab kasutajal kujundeid joonistada ning kujunditega teatud operatsioone sooritada.
Põhiosa (5p)
- Programm kuvab kasutajale graafilise kasutajaliidese ja võimaldab sellel vabakäejoont joonistada. Joonistamiseks lohistab kasutaja näpuga ekraanil. Näppu lohistades kuvab programm näpu liikumise trajektoori joonega. Kujundi joonistamine lõppeb siis, kui näpp ekraanilt eemaldub.
- Programm võimaldab joonistada suvalise arvu kujundeid.
- Joonistada peab saama ka punkti (klikk/tap ekraanil - joone algus- ja lõpp-punkt on samad).
- Programmist peab olema võimalik väljuda vajutades <back> nuppu. Enne väljumist küsitakse kasutajalt kinnitust.
Lisaosa: Ristkülik (1p)
Programm võimaldab kasutajal joonistada ristkülikut. Näiteks näpu lohistamise alustades registreeritakse ristküliku üks nurk. Lohistamise tulemusel muutub algse nurga vastasnurga asukoht (vastavalt selleks, kus kasutaja näpp on). Lohistamise ajal kuvatakse pidevalt ristkülik, mis jääb kahe punkti (algus ja lõpp) vahele. Ristküliku joonistamine lõppeb näpu ekraanilt eemaldamisega.
Seda, kuidas kasutaja saab joonistada vabakäejoont või ristkülikut, on tudengi enda otsustada. Oluline on, et programmis saab mõlemaid joonistada. Näiteks võib teha nupud erinevate kujundite jaoks.
Lisaosa: Kujundite liigutamine/kustutamine (2-4p)
Programm võimaldab joonistatud kujundite liigutamist:
- longPressi puhul läheb programm kujundite valimise režiimi. Kasutaja saab valida näppu ekraanil lohistades kujundit liigutada (liigub kujund, mis on näpule kõige lähemal).
- Sihtmärgiks olev kujund tõstetakse esile (highlight) eristades see teistest varju efektiga (DropShadow vm efekt).
- Lohistamise ajal kuvatakse pidevalt ekraanil joone uus asukoht (ehk siis kujund liigub näpuga kaasa).
- Liigutamine lõppeb näpu ekraanilt eemaldamisega. Programm jätkab kujundite valimise režiimil.
- Valimisrežiimi lõpetamiseks tuleb uuesti sooritada longPress.
Programm võimaldab joonistatud kujundite kustutamist:
- Sarnaselt liigutamisele toimub kustutamine kujundite valimise režiimis.
- Kasutaja valib kujundi, mida tahab kustutada.
- Topeltklikk kujundil kustutab kujundi ekraanilt.
- Sarnaselt kujundi liigutamisele, valimise režiimist saab välja longPress sündmusega.
Lisaülesanne annab 2 punkti, kui vaid üks (kas liigutamine või kustutamine) on realiseeritud.
Lisaülesanne annab 3 punkti, kui ristküliku joonistamine (vt eelmist lisaosa) pole realiseeritud.
Lisaülesanne annab 4 punkti, kui ristküliku joonistamine on realiseeritud.
Lisaosa: Puhverdamine (2p)
- Programm puhverdab Kasutaja tegevused, et neid saaks tagasi võtta (i.k. undo):
- Kujundi lisamine/joonistamine
- Kujundi liigutamine
- Kujundi kustutamine
- Kasutaja saab tegevusi tagasi võtta vajutades <back> klahvi.
- <back> võtab tegevusi tagasi seni, kuni neid on. Kui rohkem tegevusi tagasi võtta ei saa, alustatakse programmist väljumist.
- Lisaks puhvrist tagasivõtmisele (undo) on võimalik tegevusi korrata (i.k. redo). Kui kasutaja on mõned tegevused tagasi võtnud, saab need samad tegevused uuesti teha
- Kujundi lisamine/joonistamine
- Kujundi liigutamine
- Kujundi kustutamine
- Kasutaja saab tegevusi korrata sooritades kahe sõrmega tap/click sündmuse.
- Korrata saab vaid neid tegevusi, mis on tagasi võetud.
Selle lisaosa tegemine eeldab, et kujundi liigutamine ja kustutamine on realiseeritud.
Kui kujundi liigutamine ja kustutamine ei ole realieeritud, võib saada redo+undo eest kokku 1 punkti.
Lisaosa: Kasutajaliidese täiendamine (2p)
See lisaosa eeldab eelmiste lisaosade täitmist.
Lisaosa eesmärk on täiendada programmi kasutajaliidest järgnevalt:
- Järgmise joonistatava kujundi värvi on võimalik muuta. Selleks peaks kuskil programmi aknas olema värvivaliku element (ColorPicker). Olemasoleva kujundi värvi ei pea saama muuta (kuigi võib).
- Undo/redo jaoks on nupud. Ehk siis lisaks eelmainitud võimalustele töötavad samamoodi ekraanil olevad nupud.
- Kujundivalik (kas vabakäejoon või ristkülik) on realiseeritud nuppude või muu elemendi abil.