Tải bản đầy đủ (.pdf) (87 trang)

XÂY DỰNG ỨNG DỤNG học TIẾNG ANH CHO học SINH THPT TRÊN hệ điều HÀNH ANDROID

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.85 MB, 87 trang )

LỜI CÁM ƠN
Sau quãng thời gian học tập và rèn luyện dưới mái trường Công nghệ thông
tin và truyền thông – Thái Nguyên, bằng sự nỗ lực học tập của bản thân, sự giúp
đỡ của bạn bè và đặc biệt là sự dìu dắt đầy tâm huyết của các thầy cô trong trường,
kết thúc chặng đường 5 năm em thấy mình đã trưởng thành hơn và với kiến thức
đã tích lũy được trong quá trình học tập, em sẽ cố gắng sống và làm việc thật tốt,
trở thành một người có ích cho gia đình và xã hội.
Với lòng biết ơn sâu sắc nhất, em xin gửi lời cám ơn chân thành đến Th.s
Phạm Hồng Việt đã cùng với tri thức và tâm huyết của mình truyền đạt vốn kiến
thức quý báu cho em, tận tình giúp đỡ và động viên em trong suốt thời gian thực
hiện đồ án tốt nghiệp.
Em xin chân thành cảm ơn gia đình, bạn bè, các thầy cô trong trường Đại
học Công Nghệ Thông Tin và Truyền Thông đã động viên, tạo điều kiện thuận lợi
cho em thực hiện đồ án tốt nghiệp một cách tốt nhất.
Sau cùng em xin kính chúc các thầy cô dồi dào sức khỏe, luôn tràn đầy tâm
huyết để tiếp tục vững tay chèo lái con thuyền đưa thế hệ sinh viên cập bến bờ tri
thức.
Trong phạm vi khả năng cho phép, em đã cố gắng để hoàn thành đề tài một
cách tốt nhất. Xong, với kiến thức có hạn, chắc chắn sẽ không tránh khỏi những
thiếu sót. Em kính mong nhận được sự thông cảm và đóng góp ý kiến tích cực từ
phía các thầy cô và các bạn.
Em xin chân thành cám ơn!

1


2


LỜI CAM ĐOAN
Em tên là: Nguyễn Thị Hoài – sinh viên lớp MMT-K10A, ngành truyền


thông và mạng máy tính, khoa công nghệ thông tin, trường Đại học Công Nghệ
Thông Tin và Truyền Thông - Đại học Thái Nguyên, khóa 2011-2016.
Em xin cam đoan đã thực hiện quá trình làm đồ án một cách khoa học,
chính xác và trung thực.
Toàn bộ kết quả của quá trình làm đồ án là thành quả của quá trình học tập,
nghiên cứu của em, dưới sự hướng dẫn của Th.s Phạm Hồng Việt. Nội dung trong
đồ án nếu có tham khảo, sử dụng tài liệu thông tin từ một số nguồn khác đều được
trích dẫn trong phần tài liệu tham khảo.
Em xin chịu trách nhiệm toàn bộ trước bài báo cáo của mình!
Thái Nguyên, Ngày…… tháng….. năm 2016.
Sinh viên

Nguyễn Thị Hoài

3


4


5


DANH MỤC HÌNH ẢNH
Hình 1.1: Các phiên bản của Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Hình 1.2: Cấu trúc của hệ điều hành Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 1.3: Mô hình Activity Atack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Hình 1.4: Vòng đời của một Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Hình 1.5: Ví dụ về RelativeLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 1.6: Ví dụ về TableLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Hình 1.7: Ví dụ về Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Hình 1.8: Ví dụ về RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hình 1.9: Mô hình truyền dữ liệu với Intent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Hình 1.10: Các thuộc tính của một đối tượng Intent. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Hình 1.11: Các Action được định nghĩa sẵn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Hình 1.12: Giao diện DB Browser for SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Hình 2.1: Hình ảnh Ứng dụng Fun Easy Learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.2: Hình ảnh về ứng dụng English Study Pro. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.3: Sơ đồ use case tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Hình 2.4: Biểu đồ trình tự Use-Case “Học ngữ pháp”. . . . . . . . . . . . . . . . . . . . . . . . . . 43
Hình 2.5: Biểu đồ trình tự Use-Case “Học từ vựng”. . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 2.6: Biểu đồ trình tự Use-Case “Đọc hiểu”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 2.7: Biểu đồ trình tự Use-Case “Luyện nghe” . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Hình 2.8: Biểu đồ trình tự Use-Case “Test”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hình 2.9: Biểu đồ trình tự của Use-Case “Luyện tập”. . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 2.10: Biểu đồ hoạt động Use-Case “Học ngữ pháp” . . . . . . . . . . . . . . . . . . . . . . 49
Hình 2.11: Biểu đồ hoạt động Use-Case “Học từ vựng” . . . . . . . . . . . . . . . . . . . . . . . 49
Hình 2.12: Biểu đồ hoạt động Use-Case “Đọc hiểu” . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Hình 2.13: Biểu đồ hoạt động Use-Case “Luyện nghe” . . . . . . . . . . . . . . . . . . . . . . . . 50
Hình 2.14: Biểu đồ hoạt động Use-Case “Test” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6


Hình 2.15: Biểu đồ hoạt động của Use-Case “Luyện tập” . . . . . . . . . . . . . . . . . . . . . . 51
Hình 3.1: Giao diện màn hình chính của ứng dụng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Hình 3.2: Giao diện màn hình chọn chức năng của ứng dụng . . . . . . . . . . . . . . . . . . 57
Hình 3.3: Giao diện màn hình chức năng “Học từ vựng”. . . . . . . . . . . . . . . . . . . . . . . 58
Hình 3.4: Giao diện màn hình chức năng”Luyện nghe” . . . . . . . . . . . . . . . . . . . . . . . . 58
Hình 3.5: Giao diện màn hình chức năng “Đọc hiểu” . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Hình 3.6: Giao diện màn hình chức năng”Đoán nghĩa của từ” . . . . . . . . . . . . . . . . . 59

Hình 3.7: Giao diện màn hình chức năng “Tìm từ đúng”. . . . . . . . . . . . . . . . . . . . . . . 60
Hình 3.8: Giao diện màn hình chức năng “Điền từ còn thiếu”. . . . . . . . . . . . . . . . . . 60
Hình 3.9: Giao diện màn hình chức năng”Học ngữ pháp”. . . . . . . . . . . . . . . . . . . . . . 61
Hình 3.10: Giao diện màn hình chức năng “Test”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7


MỞ ĐẦU
Hiện nay, tiếng anh được coi là ngôn ngữ quốc tế số một trên thế giới. Hàng
triệu người từ các nền văn hóa khác nhau đều nỗ lực học tiếng anh mỗi ngày.
Ở Việt Nam, tiếng anh cũng đã chiếm được vị trí quan trọng kể từ khi đất
nước bắt đầu thực hiện chính sách mở cửa hội nhập ra khu vực và thế giới. Ở
nhiều lĩnh vực khác nhau trong xã hội như kinh tế, chính trị, khoa học, du lịch ...
đều rất cần những người có trình độ tiếng anh. Đối với học sinh, sinh viên và công
chức thì việc thông thạo tiếng anh là một nhiệm vụ gần như là tối thiểu và bắt
buộc. Bởi thế, nhu cầu học ngoại ngữ ngày càng gia tăng trên khắp cả nước.
Với sự bùng nổ của công nghệ thông tin, những chiếc điện thoại thông minh
dường như đã trở thành một vật dụng bất li thân của nhiều người, mọi hoạt động
như giải trí, tìm kiếm thông tin, giao lưu, học tập… đều có thể đáp ứng chỉ với một
chiếc điện thoại. Sự tiện lợi mà điện thoại mang lại cho cuộc sống của con người là
điều không thể phủ nhận.
Với mong muốn xây dựng được một ứng dụng phục vụ nhu cầu học tiếng anh
của học sinh, đồng thời đem đến sự tiện lợi trong quá trình sử dụng. Em đã quyết
định lựa chọn đề tài “XÂY DỰNG ỨNG DỤNG HỌC TIẾNG ANH CHO HỌC
SINH THPT TRÊN HỆ ĐIỀU HÀNH ANDROID” làm đề tài bảo vệ tốt nghiệp
của mình.
 Mục đích đề tài
Đề tài được thực hiện nhằm mục đích củng cố lại kiến thức về nền tảng
android, kỹ năng lập trình android, cũng như qui trình xây dựng phần mềm, thông

qua đó xây dựng và cài đặt ứng dụng học tiếng anh cho học sinh THPT trên hệ
điều hành android phục vụ người dùng.
 Nội dung, phạm vi thực hiện
 Tìm hiểu về nền tảng android và lập trình android.
8


 Tìm hiểu và khảo sát nhu cầu thực tế để thu thập thông tin, tài liệu… lấy cơ
sở để thiết kế phần mềm.
 Xây dựng, cài đặt ứng dụng học tiếng anh cho học sinh THPT trên hệ điều
hành android.
 Phương pháp thực hiện
 Thông qua tài liệu, thông tin thu thập trên mạng internet.
 Thông qua trao đổi với giáo viên hướng dẫn và thầy cô trong trường.
 Thông qua trao đổi, học tập cùng bạn bè và những người có kinh nghiệm.
 Cấu trúc nội dung đề tài
Đề tài gồm 3 chương chính:
 Chương 1: Cơ sở lý thuyết
 Chương 2: Phân tích thiết kế hệ thống
 Chương 3: Cài đặt chương trình thực nghiệm


9


Chương 1: CƠ SỞ LÝ THUYẾT
 Tổng quan về hệ điều hành và lập trình ứng dụng trên android.
 Tổng quan về hệ điều hành android.
 Lịch sử hình thành.
Android hiện đang là hệ điều hành trên di động phổ biến nhất thế giới. Được

sáng lập cách đây hơn 10 năm trước bởi 4 nhà phát triển Andy Rubin, Rich Miner,
Nick Sears và Chris While. Hiện tại android đang có chỗ đứng vững trong tâm trí
người tiêu dùng do lượng ứng dụng nhiều, đa dạng, dễ tùy biến cũng như các tính
năng công nghệ đột phá.
 Tháng 10/2003: Android Inc được thành lập bởi Andy Rubin, Rich Miner,
Nick Sears và Chris While.
 Tháng 8/2005: Google mua lại dự án Android do thấy được tiềm năng trong
lĩnh vực di động.
 Ngày 5/11/2007: Google chính thức ra mắt Android, từ đó đến nay ngày
5/11/2007 trở thành ngày sinh nhật của Android.
 Ngày 23/9/2008: Android 1.0 chính thức ra đời.
 Ngày 28/10/2008: HTC G1 ra mắt và là smartphone Android đầu tiên.
Từ khi thành lập cho đến nay, Thị phần Android trên thị trường điện thoại di
động ngày càng tăng lên mạnh mẽ, phần nào chứng tỏ những ưu thế và tính năng
vượt trội của nền tảng này. Đồng thời khẳng định những nỗ lực của Android trong
việc mang đến cho người tiêu dùng những sản phẩm tốt nhất.
 Quá trình phát triển.
Dưới đây là hình ảnh các phiên bản của Android trong quá trình phát triển.

10


Hình 1.1: Các phiên bản của Android
 Ngày 30/4/2009: Android 1.5 Cupcake ra đời với chợ ứng dụng cùng cải
thiện về giao diện.
 Ngày 15/9/2009: Android 1.6 Donut ra đời với cải thiện về cảm ứng đa
nhiệm, bàn phím ảo, cải thiện dung lượng pin và tính năng nhận diện giọng
nói tích hợp.
 Ngày 26/10/2009: Android Eclair ra đời với cải thiện về hiệu năng, hỗ trợ
HTML 5 cũng như khả năng xử lý đồ họa.

 Tháng 5/2010: Android 2.2 Froyo ra mắt với khả năng kết nối Bluetooth,
wi-fi Hotspot, bàn phím đa ngôn ngữ, camera và hiệu năng được cải thiện.
 Ngày 6/12/2010: Android 2.3 GingerBread ra mắt với giao diện, bàn phím
cùng thời lượng pin cải thiện đáng kể, kết nối NFC bắt đầu được hỗ trợ từ
phiên bản Android này.
11


 Ngày 22/2/2011: Android 3.0 Honeycomb ra mắt và được thiết kế cho các
thiết bị máy tính bảng với hiệu năng cải thiện và đây cũng là phiên bản
Android đầu tiên cho phép phần cứng sử dụng chip xử lý đa lõi.
 Ngày 19/10/2011, Android 4.0 IC ra mắt, đồng bộ với các thiết bị máy tính
bảng và smartphone. Tính năng điều chỉnh kích cỡ Widget, folder ở màn
hình chính cùng hàng loạt cải thiện xuất hiện.

 Tháng 6/2012: Android 4.1 Jelly Bean ra mắt, cải thiện hiệu năng, tích hợp
Google Now cũng như hàng loạt tiện ích giúp người dùng sử dụng hệ điều
hành này đơn giản hơn hết.
 Ngày 3/11/2014: Google chính thức ra mắt hệ điều hành mới nhất Android
Lollipop 5.0. “Android L” đã tích hợp các yếu tố đồ họa đơn giản của ngôn
ngữ phẳng với các hiệu ứng điều hướng rất trực quan để tạo ra Material
Design vừa đẹp, vừa tiện dụng, hệ thống thông báo dạng thẻ, Project Volta
giúp tìm kiếm pin, mã hóa dữ liệu được mặc định trên smartphone, đồ họa
đẳng cấp.
Các Smartphone trọng tâm:
 Năm 2008: HTC Dream
 Năm 2010: Samsung Galaxy S
 Năm 2011: Motorola Xoom, Samsung Galaxy S2
 Năm 2012: HTC One X, Samsung Galaxy S3, Nexus 7, Nexus 4
 Năm 2013: Sony Xperia Z, HTC one, Samsung Galaxy S4.

 Năm 2014: Zenphone 5, Samsung Galaxy Note 4, Galxy S5, Nexus 9
 Hệ điều hành (HĐH) Android và lập trình ứng dụng.
 Cấu trúc của hệ điều hành.
Mô hình sau mô tả tổng quát cấu trúc của HĐH Android.

12


Hình

1.2: Cấu trúc của hệ điều hành Android
Tầng ứng dụng (Applications)
Là tầng trên cùng của kiến trúc Android, nằm cách xa với phần cứng nhất,
là nơi chứa các ứng dụng của lập trình viên. Hầu hết các ứng dụng được viết bằng
ngôn ngữ java.
Tầng Application Framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các
nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo. Nhà
phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,
các dịch vụ chạy nền, thiết lập hệ thống báo động và nhiều hơn nữa.
Google xây dựng cho các developer để phát triển các ứng dụng của họ trên
Android chỉ bằng cách gọi các API.
13


Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
 Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để
thiết kế phần giao diện ứng dụng như: GridView, TableView….
 Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từ các
ứng dụng khác hoặc chia sẻ dữ liệu giữa các ứng dụng đó.

 Resource Manager: Cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: graphics, image, music, video…
 Notification Manager: Cho phép tất cả các ứng dụng hiển thị thông báo
của mình trên hệ điều hành.
 Activity Manager: Quản lý vòng đời của các ứng dụng và điều hướng
các Activity.
Tầng Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android. Các thư viện này sẽ được các lập
trình viên phát triển ứng dụng Android thông qua tầng Android Framework. Có thể
kể đến một vài thư viện quen thuộc như:
 android.app - Cung cấp truy cập đến các mô hình ứng dụng và là nền tảng
của tất cả các ứng dụng Android.
 android.content - Tạo điều kiện truy cập nội dung, publishing và messaging
giữa các ứng dụng và các thành phần ứng dụng.
 android.database - Được sử dụng để truy cập dữ liệu được công bố bởi các
nhà cung cấp nội dung và bao gồm các lớp quản lý cơ sở dữ liệu SQLite.
 android.graphics - Một bản vẽ đồ họa 2D API cấp thấp bao gồm cả màu
sắc, điểm, các bộ lọc, hình chữ nhật và bức tranh sơn dầu.
 android.hardware - Trình bày một API cung cấp quyền truy cập vào phần
cứng như gia tốc và cảm biến ánh sáng.
 android.opengl - Một giao diện Java với đồ họa OpenGL ES dựng hình 3D
14


API.
 android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ hệ
điều hành chuẩn bao gồm tin nhắn, các dịch vụ hệ thống và quá trình liên
lạc.
 android.media - Cung cấp các lớp để cho phép phát âm thanh và video.

 android.net - Một tập các API cung cấp quyền truy cập vào các mạng stack.
Bao gồm android.net.wifi, cung cấp truy cập không dây đến ngăn xếp của
thiết bị.
 android.text - Được sử dụng để thao tác văn bản trên màn hình điện thoại.
 android.util - Một tập các lớp tiện ích cho công việc biểu diễn chuỗi, chuyển
đổi số lượng, xử lý XML, ngày tháng, thời gian.
 android.view - Các khối xây dựng cơ bản của giao diện người dùng của ứng
dụng.
 android.widget - Một bộ sưu tập phong phú của các thành phần giao diện
người dùng được xây dựng trước buttons, labels, list views, layout
managers, radio buttons, vv.
 android.webkit - Một tập các lớp nhằm cho phép khả năng duyệt web được
xây dựng vào các ứng dụng.
 Tầng Android Runtime
Đây là phần thứ 2 nằm ở tầng 3 của kiến trúc Android. Phần này cung cấp
một thành phần quan trọng được gọi là Dalvik Virtual Machine - một loại máy ảo
Java được thiết kế đặc biệt và tối ưu hóa cho Android.
Máy ảo Dalvik: Dalvik là máy ảo trong hệ điều hành Android của Google.
Nó là một loại JVM được sử dụng trong các thiết bị Android để chạy các ứng dụng
và được tối ưu hóa cho sức mạnh xử lý thấp và môi trường bộ nhớ thấp. Đây là
phần mềm chạy các ứng dụng trên thiết bị Android. Do đó Dalvik là một phần của
Android, thường được sử dụng trên các thiết bị di động như điện thoại di động và
15


máy tính bảng cũng như trên các thiết bị nhúng như TV thông minh và các dòng
phương tiện truyền thông. Các chương trình thường được viết bằng Java và biên
dịch thành bytecode. Sau đó được chuyển từ tệp tin .class của JVM tương thích
sang tệp tin .dex (Dalvik Executable) trước khi cài đặt lên thiết bị. Tệp tin có định
dạng Dalvik Exec nhỏ gọn được thiết kế phù hợp với hệ thống đang bị hạn chế về

bộ nhớ và tốc độ xử lý.
Ngoài ra Android runtime cũng cung cấp một tập các thư viện Core Java: có sự
pha trộn của Java SE và Java ME. Tuy nhiên thư viện cung cấp hầu hết các chức
năng được xác định trong thư viện Java SE.
Tầng Linux kernel.
Là tầng dưới cùng của hệ điều hành Android. Bộ nhân này làm nhiệm vụ
như một lớp trung gian kết nối phần cứng thiết bị và phần ứng dụng. Toàn bộ hệ
thống Android được xây dựng dựa trên Linux phiên bản 2.6 [2] với một vài thay
đổi bởi Google.
 Cấu trúc của một project android.
Thư mục src (viết tắt của source): Nơi chứa các source code ứng dụng. Gồm các
package và các class. Các file có đuôi ngầm định là *.java hoặc *.aidl
Thư mục gen (viết tắt của Generated Java File): Nơi chứa các file tự động phát
sinh, hay chính là các file .java tạo ra bởi ADT plug-in, như là file R.java hoặc các
giao diện tạo ra từ file AIDL.
 File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được
sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng
dụng và các tài nguyên hình ảnh.
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào
xảy ra làm thay đổi các thuộc tính trong ứng dụng. Chẳng hạn như, bạn kéo
và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính
đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá
một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị
16


xoá.
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả
quá trình xây dựng ứng dụng.
Dưới đây là nội dung của một file R.java:

public static final class drawable {
public static final int abc_ab_bottom_solid_dark_holo=0x7f020000;
public static final int abc_ab_bottom_solid_light_holo=0x7f020001;
public static final int abc_ab_share_pack_holo_light=0x7f020005;
public static final int abc_ab_solid_dark_holo=0x7f020006;
public static final int abc_ab_solid_light_holo=0x7f020007;
public static final int abc_ab_stacked_solid_dark_holo=0x7f020008;
public static final int abc_ab_stacked_solid_light_holo=
0x7f020009;
public static final int abc_ab_transparent_light_holo=0x7f02000d;

Thư mục res (viết tắt của resource-tài nguyên): Nơi chứa các resource dùng trong
ứng dụng. Chẳng hạn như file hình ảnh, file layout, các chuỗi (string)…
Các thư mục con của res bao gồm:
 Anim/: Chứa các file .xml dùng cho việc thiết lập các hiệu ứng động
(animation)
 Color/: chứa các file .xml dùng định nghĩa màu sắc.
 Drawable/: Chứa file hình ảnh (png, jpeg, gif), file .xml định nghĩa cách vẽ
các loại hình dạng khác nhau (shape).
 Layout/: Chứa các file .xml dùng để dựng giao diện người dùng.
 Menu/: Chứa file .xml qui định application menu.
 Raw/: Chứa các file media, chẳng hạn như .mp3 hay .ogg
 Values/: Chứa file .xml định nghĩa các giá trị. Khác với các resource trong
17


các thư mục khác, resource ở thư mục này khi được định danh trong lớp R
thì sẽ không sử dụng file name để định danh, mà sẽ được định danh theo qui
định bên trong file .xml đó.
Thư mục assets: Chứa các resource file mà ứng dụng cần dùng (dưới dạng file).

File AndroidManifest.xml: Trong bất kì một project Android nào khi tạo ra
đều có một file AndroidManifest.xml, file này được dùng để định nghĩa các screen
sử dụng, các permission cũng như các theme cho ứng dụng. Đồng thời nó cũng
chứa thông tin về phiên bản SDK cũng như main activity sẽ chạy đầu tiên.
File này được tự động sinh ra khi tạo một Android project. Trong file
Manifest bao giờ cũng có 3 thành phần chính đó là: application, permission và
version.
Dưới đây là nội dung của một file AndroidManifest.xml:

18


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" />package="thu.datn.englishstudy"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="preferExternal" >
android:minSdkVersion="11"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET"/>
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ListLessonABCGrammar"></activity>
<activity android:name=".MainContentLessonABCGrammar"></activity>
</application>
</manifest>

Application:
Thẻ <application>, bên trong thẻ này chứa các thuộc tính được định nghĩa cho
ứng dụng android như:
 Android:icon = “drawable resource” -> ở đây đặt đường dẫn đến file icon
của ứng dụng khi cài đặt.
Ví dụ: android:icon = “@drawable/icon”.

19


 Android: name =”string” -> thuộc tính này để đặt tên cho ứng dụng android.
Tên này sẽ được hiển thị lên màn hình sau khi cài đặt ứng dụng.
 Android: theme = “drawable theme” -> thuộc tính này để đặt theme cho ứng
dụng. Các theme là các cách để hiển thị giao diện ứng dụng.
Ngoài ra còn nhiều thuộc tính khác….
Permission
Bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên của ứng
dụng. Khi cần sử dụng một loại tài nguyên nào đó thì trong file Manifest của ứng
dụng cần phải khai báo các quyền truy xuất như sau:
<uses-permission android:name="android.permission.INTERNET"/>
SDK version

Thẻ xác định phiên bản SDK được khai báo như sau:
android:minSdkVersion="11"
android:targetSdkVersion="21" />

Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện đang sử dụng.
 Vòng đời của một ứng dụng android.
Vòng đời của mỗi thành phần
Các thành phần ứng dụng có một vòng đời, tức là mỗi thành phần từ lúc bắt
đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active
hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible.
chu kì sống của ứng dụng android
active, inactive
Start

end.
visible, invisible

Activity Stack
20


Tương tự như các ngôn ngữ lập trình khác, Activity Stack hoạt động theo cơ
chế LIFO (Last In First Out) - cơ chế ngăn xếp.
Mỗi một Activity mới được mở lên nó sẽ ở bên trên Activity cũ, để trở về
Activity thì chỉ cần nhấn nút “Back” để trở về hoặc viết lệnh. Tuy nhiên nếu nhấn
nút “Home” rồi thì sẽ không thể dùng nút “Back” để quay lại màn hình cũ được.

Hình 1.3: Mô hình Activity Atack
Có hai kiểu để mở Activity mới.

 Mở Activity mới lên làm che khuất toàn bộ Activity cũ (không nhìn thấy
Activity cũ): Sảy ra sự kiện onPause rồi onStop đối với Activity cũ.
 Mở Activity mới lên làm che khuất một phần Activity cũ (vẫn nhìn thấy
Activity cũ): Sảy ra sự kiện onPause với Activity cũ.
Khi quay trở về Activity cũ thì sau khi thực hiện xong các hàm cần thiết,
chắc chắn nó phải gọi hàm onResume để phục hồi lại trạng thái ứng dụng.

21


Như vậy ta thường lưu lại trạng thái của ứng dụng trong sự kiện onPause và
rồi đọc lại trạng thái của ứng dụng trong sự kiện onResume.
Các trạng thái của một vòng đời

Hình 1.4: Vòng đời của một Activity
Activity bao gồm 4 trạng thái.
 Active (running): Activity đang hiển thị trên màn hình (foreground).
 Paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost
focus).
Ví dụ: Một Activity mới xuất hiên hiển thị giao diện đè lên trên Activity cũ,
nhưng giao diện này nhỏ hơn giao diện của Activity cũ, do đó ta vẫn thấy được
một phần giao diện của Activity cũ nhưng lại không thể tương tác với nó.

22


 Stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái
Stop.
 Killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo
nguyên tắc ưu tiên. Các Activity ở trạng thái Stop hoặc Paused cũng có thể bị giải

phòng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn
và phục hồi lại trạng thái trước đó.
Giải thích về các phương thức trong vòng đời
 onCreate(): Gọi khi Activity được bắt đầu khởi tạo. Đây là nơi thực hiện
mọi các khai báo cũng như thiết lập giao diện.
Luôn được theo sau bởi phương thức onStart().
 onStart(): Gọi khi Activity “restart” và đã sẵn sàng, nhưng chưa hiện ra
với người dùng
Được theo sau bởi onResume() nếu Activity đi ra foreground, hoặc onStop()
nếu nó ẩn đi.
 onResume(): Chỉ được gọi khi Activity bắt đầu tương tác với người dùng.
Luôn được theo sau bởi phương thức onPause().
 onPause(): Gọi trước khi Activity bắt đầu vào trạng thái “paused”. Trong
phương thức này ta thường sẽ giải phóng bộ nhớ, hoặc dừng các hành động nào đó
có thể chiếm dụng nhiều RAM, CPU để cho Activity được kích hoạt tiếp theo làm
việc trơn tru.
Theo sau bởi phương thức onResume() nếu Activity được kích hoạt lại (quay
về foreground) hoặc onStop() nếu nó ẩn đi.
 onStop(): Gọi khi Activity không còn được sử dụng nữa. Nó có thể sẽ bị
hủy bỏ hoặc có thể sẽ lại được kích hoạt lại từ một Activity khác.
Theo sau bởi onRestart() nếu nó được kích hoạt lại, hoặc onDestroy() nếu nó
bị hủy bỏ bởi hệ thống.
 onDestroy(): Gọi trước khi Activity bị hủy khỏi hệ thống, đây là lời gọi

23


cuối cùng mà Activity có thể thực hiện. Phương thức này có thể được gọi bởi vì ở
đâu đó có lời gọi finish() hoặc finishActivity(), cũng có thể vì hệ thống cần phải
hủy bỏ để giải phóng bộ nhớ.

Không được theo sau bởi phương thức nào.
 onRestart(): Gọi khai Activity từ trạng thái Stop khởi động trở lại.
Trong một ứng dụng của Android có chứa nhiều thành phần và mỗi thành
phần đều có một vòng đời riêng và Android chỉ được gọi là kết thúc khi tất cả các
thành phần trong ứng dụng kết thúc. Activity là một thành phần cho phép người
dùng giao tiếp với ứng dụng. Tuy nhiên, khi tất cả các Activity kết thúc và người
dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứng
dụng đã kết thúc. Bởi vì ngoài Activity là thành phần có khả năng tương tác người
dùng thì còn có các thành phần không có khả năng tương tác với người dùng như
Service…. Có nghĩa là những thành phần không tương tác người dùng có thể chạy
background dưới sự giám sát của hệ điều hành cho đến khi người dùng tự tắt
chúng.
Thời gian sống của ứng dụng.
Bảy phương thức chuyển tiếp định nghĩa trong vòng đời của một Activity.
Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi onCreate() đến trạng
thái cuối cùng gọi onDestroy(). Một Activity khởi tạo toàn bộ trạng thái toàn cục
trong onCreate(), và giải phóng các tài nguyên đang tồn tại trong onDestroy().
Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho đến
khi gọi onStop(). Trong suốt khoảng thời gian này người dùng có thể thấy Activity
trên màn hình, có nghĩa là nó không bị foreground hoặc đang tương tác với người
dùng. Giữa 2 phương thức người dùng có thể duy trì tài nguyên để hiển thị
Activity đến người dùng.
1.1.3. Các thành phần giao diện và control cơ bản trong android.
a. View
24


Trong một ứng dụng Android, giao diện người dùng được xây dựng từ các
đối tượng View và ViewGroup. Có nhiều kiểu View và ViewGroup. Mỗi một kiểu

là một hậu duệ của class View và tất cả các kiểu đó được gọi là các Widget.
Tất cả mọi widget đều có chung các thuộc tính cơ bản như là cách trình bày
vị trí, background, kích thước, lề… Tất cả những thuộc tính chung này được thể
hiện hết ở trong đối tượng View.
Trong Android Platform, các screen luôn được bố trí theo một kiểu cấu trúc
phân cấp như hình dưới. Một screen là một tập hợp các Layout và các widget được
bố trí có thứ tự. Để thể hiện một screen thì trong hàm onCreate của mỗi Activity
cần phải được gọi một hàm là setContentView(R.layout.main)- hàm này sẽ load
giao diện từ file.
 LinearLayout
LinearLayout được dùng để bố trí các thành phần giao diện theo chiều
ngang hoặc chiều dọc nhưng trên một line duy nhất mà không có xuống dòng.
LinearLayout làm cho các thành phần trong nó không bị phụ thuộc và kích
thước của màn hình. Các thành phần trong LinearLayout được dàn theo những tỷ
lệ cân xứng dựa vào các ràng buộc giữa các thành phần.
LinearLayout được trình bày theo 2 cách: Horizontal - nằm ngang hoặc
Vertical - thẳng đứng.
 RelativeLayout
Layout này cho phép bố trí các widget theo một trục đối xứng ngang hay dọc.
Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng buộc nào
đó với các widget khác. Các ràng buộc này là các ràng buộc trái, phải, trên, dưới so
với một widget hoặc so với layout parent.
Ví dụ: Xem xét layout được xác định dưới đây. Nút “Cancel” được đặt tương
đối, ở bên phải song song với nút “Login”.
Hình ảnh minh họa

25



×