Upload
sainudinuga
View
145
Download
1
Tags:
Embed Size (px)
Citation preview
Low-Level User Interface
Versi 0.2
Pembangunan Aplikasi Mobile
Tujuan
Memahami bagaimana menggunakan low-level event handling dalam MIDP
Menggambar dan menampilkan text, gambar, garis, persegi panjang, dan sudut
Menentukan warna, jenis huruf, dan ketebalan pada saat menggambar bentuk
Memahami dan menggunakan class Canvas dan Graphics
Menggambar dengan graphics
Canvas
Canvas adalah subclass dari Displayable
Ia merupakan class abstract yang harus di-extend atau dijadikan sebagai subclass sebelum sebuah aplikasi memfungsikan class tersebut
Canvas dapat digunakan bersamaan dengan Screen sebagai high-level Displayable
Canvas akan mendefinisikan method-method tanpa event-handling. Aplikasi harus meng-override class-class tersebut untuk meng-handle event.
Canvas akan mendefinisikan sebuah method abstract yang dinamakan paint(). Sebuah aplikasi yang akan menggunakan Canvas harus mengimplementasikan method paint().
Sistem Koordinat
(0,0)increasing x value
incre
asin
g y
valu
e
(getwidth()-1,getHeight()-1)
Hello, world! pada Canvas
Hello, world! Canvas
protected void paint(Graphics g) {
// membersihkan layar dengan // memberikan warna putih pada layar
g.setColor(255, 255, 255 ); g.fillRect(0, 0, getWidth(), getHeight());
// set warna yang digunakan untuk menggambar g.setColor(0, 0, 0);
// gambarlah text-nya g.drawString(text, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER); }
Menambahkan Command
Tambahkan object Command
Gunakan method addCommand() untuk menambahkan Command kepada Canvas (atau Form,List, TextBox)
Gunakan setCommandListener() untuk mendaftarkan class yang akan mendapatkan command event
Tambahkan commandListener dengan cara meng-implementasikan CommandListener dan menyediakan method commandAction()
Menambahkan Command
Menciptakan object Commandprivate Command exitCommand = new Command("Exit", Command.EXIT, 0);
Menggunakan addCommand() untuk menambahkan sebuah command ke Canvas (atau Form, List, Text Box)
addCommand(exitCommand);
Menggunakan setCommandListener untuk mendaftarkan class mana yang akan mendapatkan command event
setCommandListener(this);
Menambahkan Command
Menciptakan sebuah commandListener dengan cara meng-implements class CommandListener dan menyediakan method commandAction()
class HelloCanvas extends Canvas implements CommandListener {... public void commandAction(Command c, Displayable d){ if (c == exitCommand){ // do something } }
Graphics
Graphics adalah sebuah class utama untuk menggambar text, image, lines, persegi panjang dan sudut
Ia memiliki method-method yang digunakan untuk menentukan pewarnaan, jenis huruf, dan ketebalan garis.
Color
public boolean isColor() returns true if the display supports color, returns falseotherwise
public int numColors() returns the number of colors (or gray levels if device is doesnot support color) supported by the device
Color
Untuk menentukan warna yang akan digunakan pada method Graphics digunakanlah method setColor()
public void setColor(int red, int green, int blue)
public void setColor(int RGB)
Pada bentuk pertama, Anda akan mendefinisikan komponen-komponen warna yaitu merah, hijau, dan biru
Sedangkan pada bentuk kedua, komponen warna akan didefinisikan menggunakan bentuk : 0x00RRGGBB.
Color methods
public int getColor() retuns the current color in an int of the form aninteger in form 0x00RRGGBB
public int getRedComponent() returns the red component of the current color public int getGreenComponent() returns the green component of the current color public int getBlueComponent() returns the blue component of the current color public int getGrayScale() returns the grayscale value of the current color public void setGrayScale(int value) sets the grayscale value for suceeding drawing
operations
Fonts
Font memiliki tiga attribute yaitu face, style, dan size
Fonts tidak diciptakan sendiri oleh aplikasi, tetapi aplikasi akan mendapatkan attribute font tertentu dari sistem dan sistem-lah yang akan menyediakan font yang sesuai dengan attribute tersebut.
Tidak ada garansi dari sistem, bahwa semua attribute Font yang diinginkan oleh aplikasi dapat tersedia.
Jika sistem tidak mendapatkan font yang sesuai dengan permintaan dari aplikasi, maka ia akan mengembalikan font yang hampir sama dengan attribute-attribute yang di-request.
Fonts
public static Font getFont(int face, int style, intsize)
returns a font from the system that matches the attributes
public static Font getDefaultFont() returns the default font used by the systempublic static Font getFont(int fontSpecifier)
returns the font used for high level UI components.fontSpecifier may be:
FONT_INPUT_TEXT
or
FONT_STATIC_TEXT
Fonts
Face dapat merupakan salah satu dari berikut ini: FACE_SYSTEM, FACE_MONOSPACE, atau FACE_PROPORTIONAL.
Style dapat berupa STYLE_PLAIN atau merupakan kombinasi dari STYLE_BOLD, STYLE_ITALIC, dan STYLE_UNDERLINED.
Kombinasi dari style dapat didefinisikan dengan menggunakn bitwise OR atau operator OR (|). Misalnya: bold dan italic dapat dideklarasikan berikut ini:
STYLE_BOLD | STYLE_ITALIC
Ukuran dari Font, bisa merupakan salah satu dari berikut ini: SIZE_SMALL, SIZE_MEDIUM, atau SIZE_LARGE
Stroke Style
method setStrokeStyle(int style) akan menentukan stroke style yang akan digunakan untuk menggambar garis, sudut, persegi panjang, dan persegi panjang tumpul.
Stroke style tidak akan mengubah text, image, dan fill drawing operations.
Nilai yang benar bagi Stroke style adalah SOLID and DOTTED.
public void setStrokeStyle(int style) sets the stroke style that will be used fordrawing lines, arcs, rectangles and roundedrectangles
public int getStrokeStyle() returns the current stroke style
Anchor Points
Text akan digambar relatif terhadap anchor point. Method drawString() akan melihat titik (x,y) relatif terhadap anchor point.
public void drawString(String str, int x, int y, int anchor)
Anchor merupakan kombinasi dari konstanta horisontal (LEFT, HCENTER, atau RIGHT) dan sebuah konstanta vertikal (TOP, BASELINE atau BOTTOM).
Konstanta horisontal and vertikal harus dikombinasikan dengan bitwise OR (|). Hal ini berarti, penggambaran text akan bersifat relatif terhadap baseline dan titik tengah horisontal akan membutuhkan anchor value BASELINE | HCENTER.
Anchor Points
TOP | LEFT
BOTTOM | HCENTER
BOTTOM | LEFT BOTTOM | RIGHT
TOP | RIGHT
TOP | HCENTER
BASELINE | LEFT BASELINE | RIGHT
BASELINE | HCENTER
Menggambar Text
public void drawString(String str, int x, int y, int anchor)
draws the text in str using the current color and font. (x,y)is the coordinate of the anchor point.
public void drawSubstring(String str, int offset, int len, int x, int y, int anchor)
same as drawString, except that it will only draw asubstring from offset (zero-based) with length of len.
public void drawChar(char character, int x, int y, int anchor)
draws the character using the current color and font.
public void drawChars(char[] data, int offset, int length, int x, int y, int anchor)
draws the characters in the char array data, starting fromthe index of offset with length of length.
Menggambar Text
Menggambar Garis
public void drawLine(int x1, int y1, int x2, int y2)
Method ini akan menggambar sebuah garis dengan menggunakan warna dan jenis garis yang telah didefinisikan pada koordinat (x1,y1) dan (x2,y2).
Menggambar Garis
Menggambar Segi Empat
public void drawRect(int x, int y, int width, int height)
public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
Menggambar Segi Empat
public void fillRect(int x, int y int width, int height)
public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
Menggambar Segi Empat
Menggambar Sudut
public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
draws an arc with center on (x,y) anddimensions (width+1 x height+1). The arcdrawn begins at startAngle and extends forarcAngle degrees. 0 degree is at 3 o'clock.
public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
fills a circular or elliptical arc covering therectangular area with the current color.
Menggambar Sudut
Menggambar Images
public void drawImage(Image img, int x, int y, int anchor)
Anchor haruslah sebuah kombinasi antara konstanta horisontal (LEFT, HCENTER, atau RIGHT) dan konstanta vertikal (TOP, VCENTER, atau BOTTOM).
Konstanta horisontal dan vertikal akan dikombinasikan dengan bitwise OR (|)
Menggambar text bergantung pada titik tengah vertikal dan horisontal, sehingga dibutuhkan anchor value VCENTER | HCENTER.
Image Anchor Points
TOP | LEFT
BOTTOM | HCENTER
BOTTOM | LEFT BOTTOM | RIGHT
TOP | RIGHT
TOP | HCENTER
VCENTER | LEFT VCENTER | RIGHT
VCENTER | HCENTER
Menggambar Images
try { Image image = Image.createImage("/jedi.png");
g.drawImage(image, getWidth()/2, getHeight()/2, Graphics.VCENTER | Graphics.HCENTER);} catch (Exception e){}
Menggambar Images