S obzirom da za razvoj Android aplikacija koristim programski jezik Java, implementacija gotovih klasa koje smo obradili na kolegiju nije bio veliki problem, pošto smo i tamo radili u Javi. Kod implementacije klase MT2D nije bila potrebna nikakva modifikacija, osim što sam dodao nekoliko metoda koje su mi bile potrebne kod iscrtavanja, među kojima su rotirajOkoTocke i skalirajOkoTocke.
Kod implementacije GKS klase bilo je potrebno napraviti nekoliko manjih promjena kako bi sve radilo na Androidu. Kao što je već rečeno, iscrtavanje se odvija na Canvasu, što znači da umjesto objekta tipa Graphics
, sa kojim smo radili na kolegiju, imamo objekt tipa Canvas
. Također, ulogu prijašnje varijable Font
preuzima varijabla tipa Paint
. No, klasa Paint nije odgovorna samo za font teksta, nego i za boju iscrtavanja, debljinu linije itd. Kako bi linije izgledale ljepše, uključio sam antialiasing pomoću sljedeće naredbe.
paint.setAntiAlias(true);
Također, bilo je potrebno izmjeniti dio metode linijaDo, zbog drugačijeg iscrtavanja.
gr.drawLine(x1,y1,x2,y2);
can.drawLine(x1,y1,x2,y2, paint);
U klasu GKS su dodane metode koje koristim pri iscrtavanju svih elemenata, i to metoda za elipsu (ili neki mnogokut), pravokutnik i trokut.
public void nacrtajElipsu(double a, double b, double dx) {
postaviNa(a * Math.cos(0), b * Math.sin(0));
double x;
double y;
for (double i=0; i <= 2*Math.PI+0.05; i += dx) {
x = a * Math.cos(i);
y = b * Math.sin(i);
linijaDo(x,y);
}
}
public void nacrtajPravokutnik(double w, double h) {
postaviNa(w/2, h/2);
linijaDo(w/2, -h/2);
linijaDo(-w/2, -h/2);
linijaDo(-w/2, h/2);
linijaDo(w/2, h/2);
}
public void nacrtajTrokut(double a, double h) {
postaviNa(-a/2, 0);
linijaDo(0, h);
linijaDo(a/2, 0);
linijaDo(-a/2, 0);
}