ThiӃ t kӃ giao diӋ n trong Android

Một phần của tài liệu Xây dựng game cờ gánh dân gian trên điện thoại android (Trang 29 - 34)

II.2. Các thành phҫ n trong Android Project

II.2.2. ThiӃ t kӃ giao diӋ n trong Android

Không giӕQJQKѭOұSWUuQKMDYDWK{QJWKѭӡng, lұp trình android ngoài các lӟp

ÿѭӧc viӃ QJ;0/ÿӇ

Hình 1.8: C̭u trúc 1 Project

Xây dӵng game cӡ Gánh dân gian GVHD: PGS.TSKH Trҫn Quӕc ChiӃn

dòng ;0/QjRQKѭQJVӱ dөng XML sӁ ÿѫQJLҧn công viӋFÿLUҩt nhiӅXĈӗng thӡi sӱ dөng XML sӁ giúp viӋc chӍnh sӱa ӭng dөng sau này trӣ nên dӉ dàng.

VӅ nguyên tҳc, khi lұp trình ӭng dөng ta thiӃt kӃ giao diӋn bҵQJ;0/YjFjLÿһt các xӱ OêNKLWѭѫQJWiFYӟi giao diӋn trong code.

Cỏc Layout

/D\RXWÿѭӧFGQJÿӇ quҧn lý các thành phҫn giao diӋn khác theo 1 trұt tӵ nhҩt ÿӏQK/D\RXWÿѭӧc sӱ dөng nhҵm mөFÿtFKWKLӃt kӃ giao diӋn cho nhiӅXÿӝ phân giҧi.

7Kѭӡng khi lұp trình nên kӃt hӧp nhiӅu layout vӟLQKDXÿӇ tҥo ra giao diӋn bҥn mong muӕn.

x FrameLayout: /D\RXW ÿѫQ JLҧn nhҩt, thêm các thành phҫn con vào góc trên bên trái cӫa màn hình.

x LinearLayout: thêm các thành phҫn con theo 1 chiӅu nhҩW ÿӏnh (ngang hoһc dӑFĈk\OjOD\RXWÿѭӧc sӱ dөng nhiӅu nhҩt.

x RelativeLayout: thêm các thành phҫn con dӵa trên mӕi quan hӋ vӟi các thành phҫn khác hoһc vӟi biên cӫa layout.

x TableLayout: thêm các thành phҫn con dӵDWUrQOѭӟi các ô ngang và dӑc.

x AbsoluteLayout: thêm các thành phҫn con dӵa theo tӑDÿӝ x, y.

Mӝt sӕ thuӝFWtQKFѫEҧn

x Layout_width, layout_height: chiӅu rӝng cӫa view fill_parent là to bҵQJNtFKWKѭӟc cӫa layout chӭa view này, wrap_content là vӯDÿӫ nӝi dung cҫn hiӇn thӏ cӫa view).

x Orientation: vӟi LinearLayout, viӋc sҳp xӃp các view là nҵm kӅ nhau

theo hàng ngang hoһc hàng dӑF WD NKDL EiR RULHQWDWLRQ ÿӇ chӑn sҳp theo kiӇu nào (horizontal/vertical).

Xây dӵng game cӡ Gánh dân gian GVHD: PGS.TSKH Trҫn Quӕc ChiӃn x Gravity: thuӝFWtQKQj\TXLÿӏnh các view nҵm bên trong layout sӁ ÿһt theo vӏ trớ nào so vӟi layout(trung tõm, trỏi , phҧLWUrQGѭӟLô. x Weight: ÿӇ các view phҫn chia tӍ lӋ diӋn tích hiӇn thӏ trên màn hình (tӍ lӋ tính theo weight cӫa tӯng view trên tәng sӕ weight, các view ko khai báo weight thì sӁ xem qua width và height).

Ĉӗ hӑa trờn Android

Android cung cҩp cho chúng ta mӝW WKѭ YLӋQ ÿӗ hӑD ÿҫ\ ÿӫ ÿy FKtQK Oj JyL android.graphics. Bên trong nó chӭa các lӟSÿӗ hӑDQKѭ&RORU&DQYDV

- Color&RORUÿѭӧc thӇ hiӋn bӣi 4 giá trӏÿҫu tiên là alpha, red, green and blue (AGRB). Mӛi thӇ hiӋn gӗm 256 giá trӏELWGRÿyPӝt màu có giá trӏ cao nhҩt

lên tӟi 32 bit integer. Vӟi android thuұn tiӋQKѫQNKLFKRSKpSFK~QJWDWKӇ hiӋn giá trӏ màu bҵng mӝt sӕ nguyên thay vì thӇ hiӋn theo cách cӫa lӟp Color hay

dùng.

ĈӇ khӣi tҥo mӝt giá trӏ màu ta có thӇ khai báo:

NӃu ta có thӇ biӃWÿӝ alpha, thì ta có thӇ khai báo:

1KѭQJWURQJ$QGURLGQJѭӡLWDWKѭӡQJÿӏQKQJKƭDWURQJILOH;0/FKҷng hҥn color.xml ÿӇ sau này thuұn tiӋQKѫQFKRYLӋc sӱa chӳa.

.KLÿyWDVӱ dөng màu trong code cӫa mình bҵng cách:

Xây dӵng game cӡ Gánh dân gian GVHD: PGS.TSKH Trҫn Quӕc ChiӃn

- Paint: Paint là mӝt lӟp quan trӑng trong Android, mӝt ӭng dөng android chҷng khi nào thiӃu lӟp này. Nó bao gӗm các kiӇu style, color và nhӳng thông tin cҫn

thiӃWÿӇ vӁ bҩt cӭ dҥQJÿӗ hӑDQjRQKѭELWPDSWH[W

Ví dө: ta paint cái gì lên screen, muӕn vӁ nó vӟLVROLGFRORU7DVHWQyQKѭVDX cPaint.setColor(Color.LTGRAY);

- Canvas: Là mӝt lӟp quan trӑng trong quá trình xây dӵng ӭng dөQJ ÿһc bӋt

trong Game. NӃX QKѭ Oӟp Paint cung cҩp cho bҥn nhӳng dөng cө QKѭ FRORU ÿѭӡnJQpWÿӝ to nhӓ cӫDQpWÿӇ vӁ, thì Canvas cung cҩp cho bҥn nhӳQJSKѭѫQJ thӭFÿӇ vӁ nên nhӳng gì bҥn muӕQÿѭӡng thҷQJÿѭӡng tròn, hình chӳ nhұt, ...

ĈӇ sӱ dөQJ&DQYDVÿӇ vӁ, ta cҫn override lҥLSKѭѫQJWKӭc View.onDraw()

@Override

Protected void onDraw(C anvas canvas) { // Drawing commands go here

}

Lúc này ta có thӇ ÿѭDQKӳQJSKѭѫQJWKӭc vӁ vào onDraw().

- Bitmap: ĈӕLWѭӧng Bitmap là mӝt kiӇu tә chӭc bӝ nhӟ hoһFÿӏnh dҥng tұp tin

ÿӇ OѭXWUӳ ҧnh sӕĈӕLWѭӧQJ%LWPDSÿѫQJLҧn là mӝt mҧng hai chiӅXWURQJÿy mӛi phҫn tӱ chӭa mӝt giá trӏ PjX5*%WѭѫQJӭng vӟi mӝWÿLӇm màu trên bӭc

ҧnh sӕ hoһFÿLӇPPjXÿѭӧc vӁ lên màn hình.

7DGQJ%LWPDS)DFWRU\GHFRGH5HVRXUFHÿӇ ÿӕLWѭӧng Bitmap tӯ mӝt tұp tin hình ҧQKOѭXWURQJWKѭPөc drawable.

@Override

protected void onDraw(Canvas canvas) { Paint bPaint=new Paint();

Bitmap bitmap =

BitmapFactory.decodeResource(getResource(),

Xây dӵng game cӡ Gánh dân gian GVHD: PGS.TSKH Trҫn Quӕc ChiӃn

R.drawable.image);

Canvas.drawBitmap(bitmap,0,0,bPaint); }

Âm thanh trờn Android

Android cung cҩp cho chúng ta mӝWWKѭYLӋQÿDSKѭѫQJWLӋQÿҫ\ÿӫ (audio và YLGHRÿyOjJyLDQGURLGPHGLD3Kҫn chính cӫa gói này là lӟp MediaPlayer.

Trong mӝt ӭng dөng game ta cҫn sӱ dөng lӟS0HGLD3OD\HUÿӇ phát âm thanh

cho game nhӳng lúc cҫn thiӃt. Android hә trӧ mӝt sӕ ÿӏnh dҥQJkPWKDQKQKѭ2**

03:$9ĈӇ SKiWÿѭӧFkPWKDQKWUѭӟc hӃt ta phҧi tҥRÿӕLWѭӧng MediaPlayer bҵng

SKѭѫQJWKӭF0HGLD3OD\HUFUHDWH6DXÿyJӑLSKѭѫQJWKӭFVWDUWÿӇ bҳWÿҫu phát âm thanh.

MediaPlayer media = MediaPlayer.create(this, R.raw.amthanh);

Media.start();

3Kѭѫng thӭFVHHG7Rÿѭӧc gӑi vӟi tham sӕ OjSOD\EDFN3RVLWLRQÿѭӧc truyӅn vào, khi ta gӑL SKѭѫQJ WKӭc start() thì mediaPlayer sӁ bҳW ÿҫX FKѫL Wҥi vӏ trí

playbackPosition.

Media.seedTo(5000);

Media.start(); // b a–°au phát t u giây th u 5

Ngoài ra lӟp MediaPlayer còn chӭDSKѭѫQJWKӭFVWRSÿӇ dӯng âm thanh khi cҫn thiӃt. NӃXÿmJӑLSKѭѫQJWKӭFVWRSÿӇ dӯng âm thanh, khi nào muӕn phát lҥi âm

thanh thì phҧi gӑLSKѭѫQJWKӭFSUHSDUHWUѭӟc khi gӑi lҥi start() mӝt lҫn nӳD1KѭQJ nӃu gӑi pause() thì ta có thӇ gӑi start() ngay mà không cҫn gӑi prepare().

media.stop(); //d ̬ng âm thanh l ̅i media.prepare();

Xây dӵng game cӡ Gánh dân gian GVHD: PGS.TSKH Trҫn Quӕc ChiӃn

1JRjL UD NKL ÿm Vӱ dөQJ [RQJ ÿӕL Wѭӧng MediaPlayer ta gӑL SKѭѫQJ WKӭc UHOHDVHÿӇ giҧLSKyQJÿӕLWѭӧng MediaPlayer.

Một phần của tài liệu Xây dựng game cờ gánh dân gian trên điện thoại android (Trang 29 - 34)

Tải bản đầy đủ (PDF)

(69 trang)