1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập thực hành lập trình di Động

114 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Thực Hành Lập Trình Di Động
Người hướng dẫn GV: Nguyễn Hữu Vĩnh
Trường học Thủ Dầu Một University
Chuyên ngành Engineering Technology
Thể loại bài tập
Năm xuất bản 2009
Thành phố Thủ Dầu Một
Định dạng
Số trang 114
Dung lượng 23,13 MB

Nội dung

SỰ KIEN ANDROID Điều khiến sự kiện Event - Handling Sự kiện là một cách hữu ích đề thu thập dữ liệu về tương tác của người dùng với các thành phần tương tác của Ứng dụng.. Có 3 khái ni

Trang 1

[ee

TRUONG DAI HOC THU DAU MOT

VIEN KY THUAT CONG NGHE

tôn với

2009 THU DAU MOT UNIVERSITY

BAI TAP THUC HANH LAP TRINH DI DONG

GV: Nguyễn Hữu Vĩnh

Trang 2

IL Pan thi€t KE Layout: a5 —°——# 5

1 LinearLayout trong ANCroid .ceeeeesseeeseeseceseeseesseeeseesneesseeseecneessessaeeseessecaeeasessnecaeeseeesaeeaeesseeeaees 5

2 RelativeLayout trong AndrỌC «xxx HH TH HT Hà nh HH HH Hà và 13

IIR300415)1Ẽ7.))05):19 1012255 .ƠỊỎ 22

1 Xử lý sự kiện trong Layout (Handle event in LayOut c:cccsesesssssesesecsesseseseesessesesessesseeseeseeseases 24

2 Xử lí sự kiện bằng lớp nặc danh (Inline anonymous listerner + csccccrsecrerxcrrxererrereerrrree 25 3 Kế thừa Interface OnClickListeFi@r -:-scsst+t xxx Errrkre 29

Bài tập 15: s s2 L2 1121211 1T HH1 E1 gx nàn Hưng ng 48

V._ Kết nối cơ sở dữ liỆU - - c2 33k SH SH SH TH TH TH HH HH HH HH TH TH TH Tờ LH 55

1 Tạo lớp java cĩ tên là Notify.java cài đặt phương thức cảnh báo khi thốt Activity 55

2 Cai dat Activity dang nhap như hình 5U: - Gv HH KH HH HH Hà Hà hà nh 55

3 Cài đặt Activity quản lý sinh viên như hình SaU: .- - + - 5n 2S v vn vn HH ng ghnưrrưy 59

4 _ Cài đặt Activity danh sách lớp học như hình saU: -. - 5s tk TH HH Hưng rưy 61

6 _ Cài đặt Activity thêm lớp hỌC: tt HH TH HH HH Hà Hà hà hy 69

7 _ Cài đặt Activity chỉnh sửa lớp học như hình saU: c2 3c + 3+ EEEEiterkrksreserkrrsrerrrerrrrsee 73

8 _ Cài đặt Activity hiển thị danh sách sinh viên như hình saU: ¿c5 cccscsrsrrerrrrrrsree 79

9 Cài đặt Activity thêm sinh viên như hình 5U: - L2 11 HH HH ng kg ng re 88

10 Cai dat Activity chinh stra sinh vién nhur hinh Sau: .cccecessecseceessecsecesseeeeceeeseeeeceeeseeeecessseeaees 95

VI DANH SÁCH BÀI TẬP LỚN - 5-1 2222 SE2E31311E51321E111E1E115EE115TEE51EE1ETEEETETEEEEEEEELEErkree 103

Trang 3

Bài tập 2: Xây dựng ứng dụng di động quản lý cửa hàng thời trang - -cccccteisersrssrerrererrree 103 Bài tập 3: Xây dựng ứng dụng di động quản lí cửa hàng bán đĩa CD - : c cv srerersersrrerrrr 103

Bài tập 4: Xây dựng ứng dụng di động quản lí học sinh tiểu học - 7+ 5czStsecxsxerrrererrrrrrs 103

Bài tập 5: Xây dựng ứng dụng di động quản lí việc sử dụng phòng học trong trường ĐH 103

Bài tập 6: Xây dựng ứng dụng di động thi trắc nghiệm bằng lái xe 2 bánh . .-cccccccccc+ 103 Bài tập 7: Xây dựng ứng dụng di động quản lí cửa hàng bán xe gắn máy -c-ccccccccccercer 104 Bài tập 8: Xây dựng ứng dụng di động quản lí nhân sự - c1 St nh rererrike 104 Bài tập 9: Xây dựng ứng dụng di động quản lý dịch vụ cho thuê Xe St seiirrerirerirrerie 104 Bài tập 10: Xây dựng ứng dụng di động quản lí cửa hàng bán xẵng óc cv niirirrsrererrerrer 104 Bài tập 11 Xây dựng ứng dụng di động quản lí khách sạn - c5: S‡y + ‡eEvxkvertersrrerersrrsrrre 104 Bài tập 12 Xây dựng ứng dụng di động món ăn - - n1 HT HH HH HH HH 104 Bài tập 13 Xây dựng ứng dụng di động quản lí câu lạc bộ bóng đá: : 5c cv srsererrererrsee 104 Bài tập 14: Xây dựng ứng dụng di động ghi nhớ địa điểm và thời gian: - -cccccccccccccecee 105 Bài tập 15: Xây dung ung dung di dOng quan ly Anh cscssesesessessescsecsesseseseesesesessesseseescessseseesseeses 105 Bài tập 16: Xây dựng ứng dụng di động chat cho Android Yêu cầu các chức năng sau: 105

Bài tập 17: Xây dựng ứng dụng di động quản lý chỉ tiêu, thu nhập - c ccceseirerererrerrerre 105 Bài tập 18: Xây dựng ứng dụng di động hướng dẫn du lịch TPHCM cho người nước ngoài 106

Bài tập 19: Xây dựng ứng dụng di động quản lý nhật ký đa phương tiện trên nền Android 106

Bài tập 20: Xây dựng ứng dụng di động tra cứu thông tin xe bus trên nền Android - 106

Bài tập 21: Xây dựng ứng dụng di động quản lý Pin trên điện thoại Android (Battery Saver) 107

Bài tập 22: Xây dựng ứng dụng di động từ điển ảnh đa phương tiện - -ccccccecccrecrreree 107 Bài tập 23: Xây dựng ứng dụng di động nghe đài trực tUyẾn -¿-¿-: c2 tt the 107 Bài tập 24: Xây dựng ứng dụng COTIEACE HH TH HT HH HH Hà hy 108 Bài tập 25: Xây dựng ứng dụng thời tiết dựa theo một nhà cung cấp dịch vụ thời tiết 108

Bài tập 26: Viết chương trình thực hiện -¿-¿- cv tt SH H111 11111111 HH ch 108 Bài tập 28: Viết chương trình đọc tin tức tổng hợp từ các báo -s-++ccxcrzrercrererrreserereree 108 Bài tập 29: Xây dựng ứng dụng có tính năng tương tự như Skim trên android - «+: 109

Bài tập 30: Xây dựng ứng dụng nhận dạng biển số xe máy và xe ô tÔ -ccccccererrrererrrree 109 Bài tập 31: Xây dựng ứng dụng thông báo thời tiẾt - tt và T11 re, 109 Bài tập 33: Xây dựng ứng dụng điểm danh sinh viên qua mã vạch trên thẻ sinh viên 109

THỰC HÀNH TẠI LỚPP - 525 S233 EEEEEEEEEEEEEEEE TT T1 TT TH TT TT TT TT TT TT HE Tàn rệc 110 Buổi 1: Layout và sự kiện Android .-.- + + + + x33 33 1H HE TT TH TH 110 Buổi 2: ANDROID WIDGETS 2c 2t E111 110

Trang 4

Buổi 4: Kết nối cơ sở dữ liệu

Trang 5

I Tạo một ứng dụng Android

Trong bài chúng ta biết cách tạo 1 ứng dụng Hello trong Android đầu tiên Chúng ta sẽ tạo một ứng dụng đơn giản xuất Hello ra màn hình sử dụng công cụ Eclipse IDE Các bước thực hiện:

« Chon File > New > Project

e Chon android project and click next

iS Android Project from Existing Code

iS Android Sample Project

Je Android Test Project

a Android XML File

di Android XML Layout File

@ Android XML Values File

Ju Template Development Wizard

Trang 6

New Android Application

GQ, The prefix 'com.example.’ is meant as a placeholder and should net be used

| Application Name:@| Hello ]

Đrcject Name:đẽ Eiellc 1

Package Name: | com.example.heilo ]

Minimum Required SDK:9 API 6: Android 2-2 (Froyo} ~

Target SDK:@ APE 21: Ansiroid 4.X {L Preview) =

Compile With: @ | API 25: Andreid 7.1.1 x

Choose the base theme to use for the application

c2) < Back Next > Finist Cancel

o_ Compile with: Là mức API tối đa ứng dụng cú thờ chạy

o Theme: Giao diện cho ứng dụng

ôệ - Chọn nơi lưu trữ ProJect

= New Android Application

Trang 2/110

Trang 7

Chon Icon, Clipart hoặc Text cho Project, click Next

Configure Launcher Icon

Configure the attributes of the icon set

< Back Next > Finish Cancel

« Chon template Avtivity cho Project trong vi du nay chung t6i1 chon Blank Activity, click Next

[ Activity NameS| MainActivity

Layout Nome®| octivity_main

O The name of the activity class to create

Trang 3/110

Trang 8

Bay gid m6t project android da duoc tạo ra Bạn có thé xem chuong trinh don gian sau:

Í PackageExplorer Z‡ | Ct || BD Mainactivity.jewa Sf | cl activity_mainom! © || Bl tasktist 22 oa}

Sele : ^ || c-Rel elk

3 oppeompat_v? aa

v © Helto

~ @ ac a Al >} All > Ac!

~ BH come anes hello 6 Saport ae arena

aM public class MainActivity extends RETawEey ¢

BA Android Private Libranes 13 protected void | SHCEEREE (Buncie = cate SE Outline = =:Ð)

RA Android Dependencies enpexon o (say SR Ae Ne (> assets carcaucencvaenltn: XeZdGEc activity main)È 2

> Iibs CO com.examplehele A |

i res 1% sOverrade ~ @ MaiaActity

CÍ AndiroidM*a nagfes*t xenl ra public boolean onCreateOptionsMenu (Men me) { - ~ enCreate(Bandl

ic launcher-web.png 1 Inflate the menu; this adds items to the action Bry @ onCresteOption y |

import android view.Menu;

import android view.Menultem;

import android widget TextView;

public class MainActivity extends Activity {

@ Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceS tate);

TextView txtHello = new TextView(this);

txtHello.setText("Hello Hiep Si IT");

Trang 9

¬ L Phần thiết kế Layout:

1 LinearLayout trong Android

LinearLayout LinearLayout là ViewGroup được sử dụng khá phô biến cùng

FrameLayout va RelativeLayout, LinearLayout duoc dinh nghĩa trong xml boi cap thé dong mo <LinearLayout> va thé dong </LinearLayout>

Điểm đặc biệt của LinearLayout là có thể chia layout theo các tỉ lệ khác nhau Chúng ta

sẽ cùng nhau tìm hiểu ở dưới đây

Quy tắc layout

LinearLayout sắp sếp các view con theo hai hướng:

- Vertical: Sap sép view con theo chiéu doc

Trang 5/110

Trang 10

Các view được thêm vào sau sẽ được sắp xếp theo hướng mũi tên từ trên xuông, và

không có view nao sé nam đẻ lên view nao

- Horizontal: Sap sép cac view con theo chiêu ngang:

không có view nao sé nam đẻ lên view nao

Đề xác định hướng mà LinearLayout sẽ layout các phần tử con

theo vertical hay horizontal ta st dụng thuộc tính sau:

+ Vertical:

android:orientation="vertical"

+ Horizontal:

Trang 11

<?xml version="1.0" encoding="utf-8" ?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android: layout_width="match_parent"

Kết quả xuât ra giao diện

— for perconsl use ~ Custom Phone - 44

a

Trang 7/110

Trang 12

Và với đoạn mã tiếp theo thay đôi orientation thành: android:orientatfion="horizontal"

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_ width=”match_ parent”

android:layout_ height=”match_ parent”

Trang 13

Ngoài cách sử dung LinearLayout thông thường thì LinearLayout thường được sử dụng đề phân chia tỉ lệ layout bằng cách sử dụng thuộc

tinh layout_weight va weightSum

« weightSum: Xac dinh trong số của LinearLayout hiện tại

« layou(_ weight: Trọng số mà view con trong LinearLayout chiếm giữ

Chia tỉ lệ không có weightSum

Cùng xem xét đoạn mã sau:

Chúng ta không đánh trọng số weightSum cho LinearLayout nén téng trong số của nó

sẽ được tính bằng tổng trọng số (layout_weight) các view con cộng lại

Ở đây weightSum = 1 + 4 + 2 = 7 Có nghĩa là LinearLayout này sẽ chia thành 7 phần:

View thứ nhất có android:layout_weight="1" sẽ chiếm 1/7

View thứ hai có android:layout_weight=''4'"' sẽ chiếm 4/7

Trang 14

View thứ ba có android:layout_weigh(='"'2'' sẽ chiếm 2/7

Kết quả chúng ta thấy như sau

@ Genymotion for personal use - Custom Phene «44.4

Trang 15

Kết quả xuất ra màn hình

Chúa tỉ lệ có weightSum

Khác với cách trên weightSum được tính toán bằng tổng của cách layout_weight của

các view con Thì chúng ta có thê xác định giá trị weightSum cụ thê như sau:

Vidu: Trong LinearLayout ta co thuéc tinh android: weightSum="'10"

Trang 16

Chúng ta xác định weightSum có giá trị là 10, có nghĩa là chia layout này thành 10 phần

+ Thiết kế được các giao diện phức tạp

+ Chia tỉ lệ layout, phù hợp với việc phát triên UI trên nhiều device có kích thước màn hình khác nhau

Nhược điểm

+ Thời gian tính toán và layout view con tốn chỉ phí hơn so với FrameLayout và RelativeLayout Đây là ViewGroup tính toán phức tạp nhất trong bộ ba ViewGroup thường xuyên được sử dụng (FrameLayout, RelativeLayout, LinearLayout)

Trang 12 / 110

Trang 17

2 RelativeLayout trong Android

RelativeLayout cho phép sap xép cac control theo vị trí tương đối giữa các control khác trên giao diện (kê cả control chứa nó) Thường nó dựa vào Id của các control khác để sắp xếp theo vị trí tương đối Do đó khi làm RelativeLayout bạn phải chú ý là đặt [d control cho chuẩn xác, nếu sau khi Layout xong mà bạn lại đối Id của các control thì giao diện sẽ

bị xáo trộn (do đó nếu đôi ID thì phải đôi luôn các tham chiếu khác sao cho khớp với Id

bạn mới đổi)

RelativeLayout là ViewGroup cũng được sử dụng khá nhiều trong

android, RelativeLayout được định nghĩa trong xml bdi cap the dong

mo <RelativeLayout> va the dong </RelativeLayout>

Quy tac layout

Quy tac layout cua RelativeLayout khá giống như FrameLayout, nhưng có một số điểm

đặc biệt là các view có thê xác định bằng vị trí tương đối (relative) với các view

khác thông qua id

Các vị trí tương đối này như sau:

« android:layout_above=”1d_ name": view hiện tại sẽ nằm phía trên view có thuộc tính ¡d là ¡d_ name

« android:layout_below="id_name": view hién tai sé nam phía dưới view có thuộc tính ¡d là Id_ name

« android:layou(_toLeftOf="'id_name'': view hiện tại sẽ nằm bên trái dưới view

có thuộc tính ¡d là ¡d_ name

« android:layout_toRightOf="id_name": view hién tai sé nam phia bén phai view c6 thudc tinh id 1a id_name

Trang 18

Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh

Ví dụ 1: Để hiệu sâu hơn về RelativeLayout

Ta thay rang EditText username nam dưới TextView username Và tương

tu TextView password nam dưới Editext username, EdifText password sẽ nằm

dudi TextView password Chu y cac dong chir dam: 16, 22, 29

Mã nguôn sẽ như sau:

- <?xml version="1.0" encoding= 8"2>

<RelativeLayout

xmins:android="http://schemas.android.com/apk/res/android" android: layout_width="match_parent"

mà android: layout_height="match_parent">

android: layout_height="wrap_ content”

29 android: layout below-"@id/tv password"

android: inputTvpe="textPassword" />

</RelativeLayout>

Trang 19

Ví dụ 2: Xem hình sau:

EditText username sé nam bén phai Text View username

EditText password sé nam bén phai Text View password

TextView password va Edit'Text password sé nam phia duéi TextView username Chú ý các dong in đậm: 17, 23, 24 31, 32

@:layouvt vwidch="sacch parent™

@:leyout height="“rap_ content"

android:layout alignBaseline~"@id/edt_ password”

24 android:layout below-"@id/edt username”

android:text="pessword” />

<EcGittextc

ST cố

ang 21đG:1ayotr _ idth="msatch parent”

ané@roid:leycout _~-fi- wrap _content"|

android:ilayout _below="¢id/tv_ username”

android:layout toRightOf~"814/tv password"

android: inputType="texcPassword* />

f/RelativeLayour

Trang 15/110

Trang 20

Một số thuộc tính khác thường xuyên sử dụng với RelativeLayout:

« android:layout_alignParentBottom="boolean'': Căn dưới phần tử hiện theo phân tử cha nếu set là true

+ android:layout_alignParentTop="boolean": Can trén phan hién tai theo phan tir cha nét set 1a true

+ android:layout_alignParentRight="boolean": Can phái phần tử hiện tai theo phân tử cha nếu set là true

¢ android:layout_alignParentLeft="'boolean": Can trai phan tử hiện tại theo phần

tử cha nêu set là true

xm1ns: android="http: //schemas android com/apk/res/android”

android: layout_width="match_ parent”

Trang 21

[Quick Access | feo | |G tava +> Debug

ES Package Explorer 23 == OG activity_mai @ my-activity_ 23 | 0 = © || GF Outline 22 eerra

¬»%|#œ vị: Palette gì x N x -= v ~ [hij Relativelayout

€Ở LayoutD :

&@= Layoutemo > Form Widgets r

8 LifeCircle [Ab] Textvi =| We Apptheme v (#8) tv_password (TestView) -

GS Lineartayout = +1 - edt password (EditText)

v & Relativelayout [Ab} Large Text @ MainActivity ~| @ ~

x (8 src \Ab) Medium Te

YB hiepsiit.com AB] Small Text ”— -

(2) MainActivityja fox) Button

@® gen [Generated Java Fi : la] Œi | ao

BA Android 7.1.1 sais Send Bistion 5

BA Android Private Librari |=j ToggleButton a:

BA Android Dependencie: (4) CheckBox †

Gy assets (@ RadioButton v = o 2 &

% - [ Properties || 'I me

_- Go Text Fi aisle + woes =

> libs

v Gores ———

& drawable-hdpi () Composite

@& drawable-idpi \) Images & Media

& drawable-mdpi CƠ Time & Date

tawable-xehdpi ) Advanced = Align Left | @+id/edt_username 9 š

{2 activity_main.n 2 Other w | Align Right

iO) My_activity_vid Ry () Custom & Library Views < > Align Bott

° TƯ hư (J Graphical Layout =| my_activity_vidul xml sik -

Uu diém

+ Thiết kế được các giao diện phức tạp

Nhược điểm

+ Thời gian tính toán và layout các view con khá lâu so với FrameLayout

+ Muốn sử dụng các thuộc tính như android:layout_above, android:layout_toLeftOf thi

phải đặt ¡d cho các view mà view hiện tại xác định vị trí tương đối đối với các view đó

Trang 22

TableLayout trong Android

Kết hợp với thẻ TableRow để tạo ra các hàng các cột cho layout Cách sử dụng cũng khá đơn gián Khi dùng TableLayout, mặc định sẽ tạo ra các đường viền xung quanh các ô Các ô có thể chứa nội dung là bất kỳ thành phần view nào khác (có thê chứa

LinearLayout, FrameLayout hoặc TableLayout cũng được)

Mỗi thẻ TableRow nằm trong thẻ TableLayout tạo ra một hàng Thẻ này sẽ thực sự sẽ chứa đựng các thành phần view khác

TableLayout sẽ xem dòng nào có số lượng control nhiều nhất để xác định rằng nó có bao nhiêu cột (lấy dòng có số lượng control nhiều nhất làm số cột chuẩn)

Trang 23

rags android: layout_columns="2"

Các bước tạo LayoutTable như mô tả trên:

Bước 1: Sau khi tạo project, Thay đôi Layout RelativeLayout sang TableLayout : Click - Right lên Avtivity

Trang 24

= Change Layout oO >

Change from RelativeLayout

Bước 2: Thêm các dong vao TableLayout > Add

Row, chon Tablelayout trén Activity

~ ES tet AB) Edit 1Ð Alt+ Shift+R

& Edit StretchColummns

~ Ee tat Edit ShrinkColumns

= TableLayou Paste Ctrtev

Stretch C Baier aie

Trang 26

Ket qua cua vi dụ trên:

II SỰ KIEN ANDROID

Điều khiến sự kiện (Event - Handling)

Sự kiện là một cách hữu ích đề thu thập dữ liệu về tương tác của người dùng với các

thành phần tương tác của Ứng dụng Ví dụ: các nút nhắn hoặc màn hình cảm ứng v.v Framewordk Android quản lý các sự kiện vào trong một hàng đợi (queue), sự kiện nào vào trước sẽ ra trước (FIFO) Chúng ta có thê bắt những sự kiện này trong chương trình

của chúng ta và thực hiện một số yêu cầu thích hợp

Có 3 khái niệm liên quan đến quán lý sự kiện:

Event Listeners: Là một giao diện trong một View, View này chứa một phương thức duy nhất là callback Phương thức này được gọi bởi Frameword Android, khi View đã được đăng ký sự kiện và người dùng tác động lên View trong UI (giao dién người dùng) Event Listeners Registration: Event Registration la mét qua trinh ma mét Event Handler da duoc dang ky voi Event Listener dé ma Handler nay dugc goi khi Event

Listener kích hoạt sự kiện

Event Handlers: Khi một Event xảy ra, và chúng ta đã đăng ký một Event LIstener cho

sự kiện, thì Event Listener gọi Event Handler, là phương thức mà thực sự xử lý sự kiện

đó

Event Handler Event Listener Name

Trang 22 / 110

Trang 27

sử dụng phương onClick() để xử lý sự kiện

OnLongClickListener()

Đăng ký sự kiện khi người dùng hoặc click hoac cham (touche)

hoặc focus trên bất ký widget như button, text, image vv trong một hoặc

nhiều giây Chúng ta sẽ sử dụng phương onLongClickQ đề xử lý sự kiện

OnFocusChangeListener()

Sự kiện phát sinh khi widget mat focus

OnFocusChangeListener()

Sự kiện phát sinh khi người dùng focus trén widget va nhan (presse)

hoặc thả (release) một phím trên thiết bị

(Context Menu) Đăng ký Event Listener trong Android

Đăng ký Event là tiến trình mà bởi đó một Event Handler duoc đăng ký với một Event

Listener để mà handler được gọi khi Event Listener kích hoạt sự kiện Dưới đây là một số

cách đề đăng ký Event Handler, chúng ta sẽ demo từng cách một trong các trang tiếp

theo:

Xu ly su kién trong Layout (Handle event in Layout)

Xử lí sy kiện bằng lớp nặc danh (Inline anonymous listener)

Ké thira Interface OnClickListener (Implements OnClickListener Interface)

Sur dung bién (Event Listener using Variable)

Bất sự kiện thông qua lớp lắng nghe (Listener Class)

PerformClick method

Trang 28

1 Xử lý sự kién trong Layout (Handle event in Layout)

Khi ban tao mét View trong layout, bat ky layout nao citing sé có thuộc tính như

sau: android:onClick=”EventName“ , EventName ở đây chính là tên sự kiện, khi

người dùng tương tác với view và nó sẽ bắt sự kiện tương ứng với view đó dựa vào ID.Đây là một view định nghĩa trong layout:

O file layout minh đã khai báo một sy kién onClick co tén la “clickMe* lu6n, va trong

class MainActivity minh khai báo một phương thức có tên public void clickMe(View v),

ở đây các bạn muôn no bat su kién cho nut button thi bắt buộc phương thức khai bao phải

trùng tên với tên onClick trong ñle layout.Ở đây mình đã khi báo giống nhau rồi nhé, nhớ tham số truyền vào phương thức là View nhé chứ không có là lỗi ngay.Ngoài ra trong trường hợp có nhiều nút View gán cùng tên sự kiện thì bạn sẽ bắt theo ID như sau:

Trang 29

Và đây là các bắt sự kiện cho 2 nút button có chung tên sự kiện clickMe:

// Thêm sự kiện tại đây có tham số là View

public void clickMe(View v){

// kiem tra bằng dùng phương thức getID() của view so sánh với id của button

switch(v.getId()){

case R.id.btnLogin:

// Hiện thị thông báo trong vòng vài giây

Toast.makeText(getApplication(), "Hiệp Sĩ TT: Bạn đang Click vao Button Login", Toast.LENGTH_LONG) show();

Kết quả khi click vào button Login:

Hiép Si HT: Bon dang Click yao Button Login

2 Xử lí sự kiện bằng lớp nặc danh (Inline anonymous listener)

Ở đây thì Activity sẽ kế thừa interface OnClickListener, interface này phương thức

onClick sẽ có nhiệm vụ là lắng nghe các sự kién click vào View, nếu có phương thức này

sẽ được gọi đến

Dinh nghĩa nut Button 6 xml nhu sau:

Trang 25 / 110

Trang 30

Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh

Trang 31

10 public class MainActivity extends Activity implements OnClickListener {

public void onClick(View v) {

// TODO Auto-generated method stub

// Lay id ttng button

switch(v.getId()){

case R.id.btnLogin:

// Hiện thị thông báo trong vòng vài giây

Toast.makeText(getApplication(), "Hiệp Sĩ TT: Bạn đang Click vao Button Login", Toast.LENGTH_LONG) show();

Trang 32

package hiepsiit com;

//Xử lý sự kiện cho 2 button

btnLogin setonC1ickListener (this);

btnLogout.setOnClickListener(this);

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

break;

case R.id.btnLogout:

Toast.makeText(getApplication(), "Hiệp Sĩ TT: Bạn dang Click vao Button Logout", Toast.LENGTH_LONG) show();

break;

}

Trang 33

Kết quả khi click vao button Login:

DI 7U 7 AC 0 06a

3 Kế thừa Interface OnClickListener

Ở day thi Activity sẽ ké thira interface OnClickListener, interface này phương thức

onClick sẽ có nhiệm vụ là lắng nghe các sự kiện click vào View, nếu có phương thức nay

xm1ns: android="http: //schemas android com/apk/res/android”

xm1ns : tools="http: //schemas android com/tools”

android: layout_width="match_ parent”

Trang 29 / 110

Trang 34

Sau đó ở MainActivity bạn sẽ implement Interface OnClickListener va override lai

phuong thirc onClick cua interface này

public void onClick(View v) {

// TODO Auto-generated method stub

// Lấy id từng button

switch(v.getId()){

case R.id.btnLogin:

// Hiện thị thông báo trong vòng vài giây

Toast.makeText(getApplication(), "Hiệp Sĩ TT: Bạn đang Click vao Button Login", Toast.LENGTH_LONG) show() ;

Trang 30 / 110

Trang 35

Kết quả khi click vào button Login:

Hiep Si IT: Ban dang Click vao Button Login

Higp STIT: Ban Gang Click vac Button Logout

IV ANDROID WIDGETS

Bài tập 1 : Toast và tùy chinh Toast trong Android

Trong Android, Toast dùng đề hiển thị thông tin trong khoảng thời gian ngắn.nó giống như một thông báo nổi trên ứng dụng, không ngăn cản tương tác người dùng chúng ta có thê tùy biến lại Toast

Trang 36

Simple Toast In Android =

Lớp android.widget.Toast là lớp con của lớp java.lang.Object.Chúng ta không thể tùy

java.lang.Object

bién Toast trong tap tin xml

Các phương quan trong cua Toast

*ˆ makeText(Context context, CharSequence text, int duration): Phương thức

này thường sử dụng đề hiện thị thông báo Phương thức này có 3 tham số:

Context context: thuong la YourActitivty.this cia ban vao néu nhu ban dang sir dung 6 Activity, nếu như bạn sử dung & Fragment thì điền vào đó là getActivity()

CharSequenee text: đây chính là nội dung bạn muốn show lên, ở đây là kiểu String

int duration: Khoang thoi gian Toast can hiển thị, nó là hằng số

Hằng số của Toast: Dưới đây là các hằng số của Toast được sử dụng đề thiết lập thời

gian cho Toast

v¥ LENGTH_LONG: Toast sé hién thị trong 3,5 giây

v¥ LENGTH_SHORT: Toast sé hiển thị trong 2 giây

Ví dụ sau chúng ta dùng phương thức makeText để hiện thị thông báo, thiết lập thời gian

hiên thị là 3,5 giây:

Toast toast = Toast.makeText(getApplicationContext(), "Ví dụ Toast",

Toast.LENGTH LONG); // khởi tạo một Toast gồm 1 ngữ cảnh, nội dung, thời gian hiển thị

* show(): phương thức này hiện thị thông báo ra màn hình Phương pháp này hiển

thị thông báo bằng cách sử dụng phương thức makeText() của Toast

Trang 32 / 110

Trang 37

Ví dụ: Trước tiên chúng ta khởi tạo Toast và sau đó hiện thị nó bằng cách sử dụng

phương thức show ()

Toast toast = Toast.makeText(getApplicationContext(), "Vi du vé Toast",

Toast.LENGTH_LONG); // Khởi tạo Toast, thông tin hiển thị, thời gian 3,5

giây

toast.show(); // Hiển thị Toast

Ví dụ về Toast

Bài tập 2: Alert Dialog (Hộp thoại cảnh báo) trong Android

Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm I Button Khi người sử click

vào Button '"Thoát'' sẽ xuất hiện một Alert Dialog Tién hanh tao project, vao thu

mục res /layout -> acfivity_main.xml thiết kế giao điện sau:

«> Form Widgets

Ad) TextView

Ab) Large Text mis -

Ab] Medium Text

te AppTheme +| @ MainActvity + @ + v [8 activity moin (Relative

lex, button - “Thost*

| Images & Media

_) Time & Date

| Transitions

_) Advanced

Click vào Nút Thoát 4

Bước 1: Tao m6t project tén la AlertDialog: File->New->Android Application

Project điền các thông tin ->Next ->Finish

Trang 38

Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh

Bước 2: Mở res -> layout -> xml (hoặc) activity_ main.xml và thêm code, chúng fa sẽ

tạo các đối tượng Buton trong Relative Layout

Trang 39

import android view.Menultem;

import android view View;

import android.widget Toast;

public class MainActivity extends Activity {

public void exit(View view){

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

// Setting Alert Dialog Title

alertDialogBuilder.setTitle("Xdc nhan dé thodt !!!");

// Icon Of Alert Dialog

alertDialogBuilder.setIcon(R.drawable question) ;

// Setting Alert Dialog Message

alertDialogBuilder.setMessage("Ban cé muén thoát?");

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this, "Bạn đã click vào nút

không đồng ý”, Toast.LENGTH_ SHORT) show() ;

});

AlertDialog alertDialog = alertDialogBuilder.create();

alertDialog.show();

Trang 40

Thast chirena trinh

Mỗi lần click chuột vào các Button thì sẽ thực hiện phép toán tương ứng: ví dụ khi

click chuột vào Tông 2 số thì kết quả ở trên là 113

Riêng nút Thoát chương trình: cho phép đóng chương trình

KK Tổng 2 số viết theo Onclick In KML Hiệu 2 số viết theo >Inline anonymous listener

Tích 2 số viết theo > Activity is listener

Thương 2 số viết theo~>Listener in variable

Ước số chung lớn nhất viét theo >Explicit listener class

Và Thoát chương trình viết theo > View Subclassing

Hướng dẫn:

- _ Để lấy số a: EditText edita=(EditTexÐfindViewById(R.id.edi/soa);

Trang 36 / 110

Ngày đăng: 15/01/2025, 21:53