Programowanie urządzeń mobilnych Podstawy tworzenia aplikacji z

Transkrypt

Programowanie urządzeń mobilnych Podstawy tworzenia aplikacji z
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME
ćwiczenia 2
Wykorzystanie plików graficznych w MIDlet’ach
•
•
•
utworzenie obiektu klasy Image (statyczna metoda createImage())
utworzenie obiektu klasy ImageItem
dodanie utworzonego obiektu do formularza (lub innego obiektu)
Jedna z wersji metody createImage() tworzy obiekt z pliku graficznego (obsługiwany
format graficzny to PNG). Podajemy ścieżkę do pliku znajdującego się w katalogu res
(ang. resources - zasoby).
Przykładowa aplikacja
wykorzystywany plik: taurus.png znajdujący się w katalogu res
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import java.io.*;
/**
* MIDlet: Wyświetlanie grafiki
* Klasy główne: Form (dziedzicząca z klasy Screen)
* Klasy dodatkowe: Image oraz ImageItem (dziedzicząca z klasy Item)
*/
public class WyswietlanieGrafiki extends MIDlet implements CommandListener {
// wykorzystanie klasy Form (formularz)
private Form frm;
// wykorzystanie klasy Command (obsługa poleceń)
private Command exitCommand;
// wykorzystanie klasy Display
private Display dp;
// dodatkowe pola związane z formularzem
private ImageItem img;
private Image image;
// konstruktor tworzacy główny ekran
public WyswietlanieGrafiki () {
frm = new Form("Wyświetlanie grafiki");
try {
// Tworzymy "Obraz" / oznacza ścieżkę do katalogu res
image = Image.createImage("/taurus.png");
} catch (IOException e) {
System.out.println ("Nie można załadować obrazka!");
}
// tworzymy obiekt klasy ImageItem, ktry mozemy dodać do formularza
1
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
img = new ImageItem(null, image, ImageItem.LAYOUT_CENTER, "Obrazek
przedstawiający byka");
frm.append(img);
// tworzymy nowe polecenie
exitCommand = new Command("Zakończ", Command.EXIT, 0);
// dodajemy polecenia do formularza
frm.addCommand(exitCommand);
// wskazujemy obiekt obslugujacy zdarzenia
frm.setCommandListener(this);
}
public void startApp() {
// ustawiamy ekran poczatkowy
dp = Display.getDisplay(this);
dp.setCurrent(frm);
}
public void pauseApp() {
}
public void destroyApp(boolean u) {
}
// ciało metody z interfejsu CommandListener
public void commandAction(Command c, Displayable d) {
// obsluga polecenia exitCommand (kończymy działanie aplikacji)
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
}
}
2
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Obsługa menu
Aplikacje posiadające wiele opcji powinny mieć możliwość umieszczenia ich w menu. W
MIDlet’ach opcje tworzone są za pomocą nowych obiektów klasy Command. Ich
umieszczenie uzależnione jest od typu, priorytetu oraz możliwości urządzenia.
Przykładowa aplikacja
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
/**
* MIDlet: TworzenieMenu
* Klasy główne: TextBox (dziedzicząca z klasy Screen)
*/
public class TworzenieMenu extends MIDlet implements CommandListener {
// wykorzystanie klasy TextBox
private TextBox tb;
// wykorzystanie klasy Command (obsługa poleceń)
private Command
exitCommand, pisowniaCommand, wyslijSMSCommand, wyslijMMSCommnad,
wyslijBTCommnad, wyczyscCommand, zapiszCommand ;
// wykorzystanie klasy Display
private Display dp;
public TworzenieMenu () {
// tworzymy obiekt klasy TextBox
tb = new TextBox("Wprowadzanie tekstu", "", 320, TextField.ANY);
// tworzymy nowe polecenia
exitCommand = new Command("Zakończ", Command.EXIT, 0);
pisowniaCommand = new Command("Sprawdź pisownię", Command.SCREEN, 1);
wyslijSMSCommand = new Command("Wyślij SMS'em", Command.SCREEN, 1);
wyslijMMSCommnad = new Command("Wyślij MMS'em", Command.SCREEN, 1);
wyslijBTCommnad = new Command("Wyślij przez BT", Command.SCREEN, 1);
wyczyscCommand = new Command("Wyczyść", Command.SCREEN, 1);
zapiszCommand = new Command("Zapisz", Command.SCREEN, 1);
// dodajemy polecenia do pola tekstowego
tb.addCommand(exitCommand);
tb.addCommand(pisowniaCommand);
tb.addCommand(wyslijSMSCommand);
tb.addCommand(wyslijMMSCommnad);
tb.addCommand(wyslijBTCommnad);
tb.addCommand(wyczyscCommand);
tb.addCommand(zapiszCommand);
// wskazujemy obiekt obslugujacy zdarzenia
tb.setCommandListener(this);
}
3
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
public void startApp() {
// ustawiamy ekran poczatkowy
dp = Display.getDisplay(this);
dp.setCurrent(tb);
}
public void pauseApp() {
}
public void destroyApp(boolean u) {
}
// ciało metody z interfejsu CommandListener
public void commandAction(Command c, Displayable d) {
// obsluga polecenia exitCommand (kończymy działanie aplikacji)
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
// obsluga pozostałych poleceń
// ............
}
}
Wykorzystanie GUI niskiego poziomu – klasa Canvas
Klasa Canvas jest klasą reprezentującą ekran urządzenia mobilnego. Wykorzystanie
bezpośredniego dostępu do ekranu polega na utworzeniu klasy dziedziczącej z klasy
Canvas. Przesłonięcie odpowiednich metod pozwala na obsługę większości zdarzeń
związanych z ekranem. Metodą, którą zawsze musimy przesłonić jest metoda paint()
(wywoływana gdy urządzenie potrzebuje zaktualizować dane na ekranie). Parametrem
metody jest referencja do obiektu klasy Graphics reprezentującego ekran urządzenia.
Większość metod związanych z obsługą ekranu dostępna jest w klasie Graphics
(rysowanie figur, zmiana koloru, wyświetlanie tekstu itp.). Parametry fizyczne ekranu
urządzenia mobilnego uzyskamy za pomocą metod klasy Canvas (np. getWidth(),
getHeight()) oraz metod klasy Display (np. isColor()).
Przykładowa aplikacja
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
// klasa dziedzicząca z klasy Canvas (musimy przesłonić przynajmniej metodę paint())
class Ekran extends Canvas {
public void paint(Graphics g) {
// pobieramy rozmiary ekranu
int szer = getWidth();
int wys = getHeight();
// czyścimy ekran na biało
g.setColor(0x00ffffff);
g.fillRect(0, 0, szer - 1 , wys - 1);
4
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
// rysujemy czerwony prostokąt
g.setColor(0x00ff0000);
g.drawRect(szer / 10, wys / 10, szer / 5, wys / 5);
// rysujemy zieloną linię
g.setColor(0x0000ff00);
g.drawLine(10, 10, 70, 70);
// piszemy niebieski tekst
g.setColor(0x000000ff);
g.drawString("Piszemy po ekranie...", 10, 90, Graphics.TOP | Graphics.LEFT);
}
}
public class ObslugaEkranu extends MIDlet implements CommandListener {
// pola
private
private
private
klasy (jedno z pól jest referencją do obiektu klasy Ekran)
Ekran ekr;
Command exitCommand;
Display dp;
// konstruktor
public ObslugaEkranu () {
ekr = new Ekran();
exitCommand = new Command("Zakończ", Command.EXIT, 0);
ekr.addCommand(exitCommand);
ekr.setCommandListener(this);
}
public void startApp() {
dp = Display.getDisplay(this);
dp.setCurrent(ekr);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
// obsluga polecenia exitCommand (kończymy działanie aplikacji)
if (c == exitCommand) {
destroyApp(true);
notifyDestroyed();
}
}
}
5
Programowanie urządzeń mobilnych
Podst a wy t wo rzen ia a pl ik acj i
Zadania
1. Napisz MIDlet wyświetlający ekran powitalny będący jego nazwą/logiem (plik
graficzny). Ekran ten powinien po chwili zniknąć. Wykorzystaj poznane klasy (np.
klasę Alert lub Form) oraz dowolny plik graficzny w formacie PNG. Sam MIDlet
może być, którymś z poznanych na poprzednich ćwiczeniach (formularze,
wyświetlanie tekstu itd.)
2. Korzystając z przykładowego kodu MIDlet’u z wieloma opcjami zmień ich kolejność
w menu (priorytet polecenia), a następnie utwórz aplikację pobierającą od
użytkownika dwie liczby i wykonującą określoną operację na nich (dodawanie,
odejmowanie, dzielenie, mnożenie itp.). Wykorzystaj rozbudowane menu.
3. Zaprojektuj MIDlet wyświetlający na ekranie tabliczkę mnożenia 10x10.
Wykorzystaj klasę Canvas oraz parametry urządzenia mobilnego do prawidłowego
rozmieszczenia wszystkich elementów.
6

Podobne dokumenty