Tải bản đầy đủ (.docx) (71 trang)

Xây dựng trò chơi spiderhunter cho điện thoại di động trên nề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 (2.9 MB, 71 trang )

LỜI CAM ĐOAN
Em xin cam đoan rằng đồ án tốt nghiệp : “Xây dựng trò chơi
SpiderHunter cho điện thoại di động trên nền hệ điều hành Android ” là công
trình nghiên cứu của bản thân em. Các nội dung nghiên cứu và kết quả trong đề
tài này là hoàn toàn trung thực và chưa từng được công bố trong bất cứ công trình
nào trước đây. Các module và các thông số trong chương trình demo là kết quả của
quá trình thực hiện đồ án của em. Ngoài ra em còn sử dụng một số kiến thức, thông
tin của các tác giả khác đã được thể hiện trong phần tài liệu tham khảo.
Nếu phát hiện có bất sự gian lận nào em xin chịu trách nhiệm trước hội
đồng, cũng như kết quả đồ án của mình.
Thái Nguyên, tháng 06 năm 2012
Sinh viên thực hiện đồ án
Nguyễn Tuấn Ninh

1


LỜI CẢM ƠN
Trước tiên em xin dành lời cảm ơn chân thành và sâu sắc tới các thầy
giáo, cô giáo trong trường Đại học Công Nghệ Thông Tin Và Truyền Thông và
các thầy cô giáo trong khoa Công Nghệ Thông Tin, bộ môn Mạng và Truyền
Thông nói riêng đã tận tình giảng dạy truyền đạt cho em những kiến thức, kinh
nghiệm quí báu trong suốt thời gian vừa qua.
Đặc biệt em xin gửi lời cảm ơn tới cô giáo ThS.Đinh Thị Thanh Uyên, cô
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm đồ
án tốt nghiệp. Trong thời gian làm việc với cô, em không ngừng tiếp thu thêm
nhiều kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiên
cứu nghiêm túc, hiệu quả. Đây là những điều rất cần thiết cho em trong quá trình
học tập và công tác sau này.
Ngoài ra, trong quá trình thực hiện đồ án em còn nhận được rất nhiều sự
động viên và giúp đỡ từ phía gia đình, người thân và tập thể các bạn trong lớp.


Do đó kết quả cũng như tính khả dụng của bài luận văn này trong thực tế là lời
cảm ơn sâu sắc nhất của em gửi tới mọi người và là nguồn động lực để em có thể
tự tin vào các kiến thức mình đã thu được sau khi tốt nghiệp.
Thái Nguyên, tháng 06 năm 2012
Sinh viên thực hiện đồ án
Nguyễn Tuấn Ninh

2


MỤC LỤC

3


DANH MỤC HÌNH ẢNH

4


TỔNG QUAN VỀ ĐỀ TÀI
 Lý do chọn đề tài.
Trong những năm gần đây với sự phát triển vượt trội của khoa học công
nghệ, đặc biệt là công nghệ thông tin và truyền thông. Mạng điện thoại di động
xuất hiện tại Việt Nam cùng với số lượng các thuê bao cũng như các nhà cung
cấp dịch vụ di động tại Việt Nam ngày càng tăng. Cùng với sự phát triển của số
lượng thuê bao di động là sự đa dạng hoá các dịch vụ hướng đến thiết bị di
động. Điện thoại di động không còn là công cụ dành cho những người đi làm
nữa mà nó còn được sử dụng phổ biến trong tầng lớp đông đảo từ trẻ đến già.
Nhiều người đã coi điện thoại di động như một vật không thể thiếu trong cuộc

sông hàng ngày.
Ngày nay điện thoại di động không chỉ còn mang chức năng gọi điện hay
nhắn tin thông thường mà nó còn là một thiết bị giải trí, tra cứu thông tin rất tiện
lợi với rất nhiều những ứng dụng hay và có ích như chơi game, chụp ảnh, xem
phim,... Do đó, xây dựng các ứng dụng cho điện thoại di động đang là một yêu
cầu tất yếu trong xu thế hiện nay và nó đem lại lợi nhuận,doanh thu cao cho
những nhà mạng, những người lập trình.
Các nhà sản xuất thiết bị di động lớn hiện nay chọn Android làm hệ điều
hành chủ đạo với số lượng người dùng và thiết bị ngày càng tăng dẫn đến nhu
cầu lớn về phần mềm. Android có tính mở cao, được sự hỗ trợ nhiều từ cộng
đồng. Hệ điều hành Android nổi bật với khả năng hoạt động ổn định và linh hoạt,
có thể chạy nhiều ứng dụng một lúc linh hoạt, mượt mà. Android còn hỗ trợ cài
đặt không giới hạn số lượng phần mềm cài đặt.
Lập trình Game Android là hướng đi mới, phải vận dụng nhiều kiến thức
trong CNTT. Từ đó thúc đẩy khả năng tự nghiên cứu và vận dụng những kiến
thức đã học áp dụng vào thực tế. Hiện nay, Android đang là sự lựa chọn hàng đầu
cho những nhà phát triển ứng dụng mới với các khoản đầu tư lớn, và với xu thế
này, số lượng ứng dụng và game trên Android sẽ tăng lên đáng kể trong tương
lai.Luận văn này được thực hiện với mục đích tìm hiểu cách phát triển ứng dụng
trên hệ điều hành Android. Áp dụng xây dựng game Spider Hunter
Em xin cảm ơn các thầy cô ở bộ môn Mạng & Truyền Thông, Trường Đại
Học Công nghệ thông tin, đặc biệt là cô Đinh Thị Thanh Uyên, đã tận tình hướng
dẫn, góp ý để em có thể hoàn thiện luận văn này. Em rất mong nhận được những
ý kiến quý báu của các thầy cô để luận văn này được hoàn thiện hơn.

5


 Mục tiêu và nhiệm vụ nghiên cứu.


Mục tiêu nghiên cứu: Xây dựng Game “SPIDER HUNTER” trên hệ điều
hành Android. Nhiệm vụ nghiên cứu:
-

Thu thâp,nghiên cứu tìm hiểu cách lập trình trên nền tảng Android.
Nghiên cứu sử dụng ngôn ngữ Java và các thư viện trong Android để lập

-

trình Game.
Nghiên cứu các thuật toán sử dụng trong Game. Phân tích thiết kế Game.
Viết đề cương, báo cáo, cài đặt chương trình.

 Phạm vi, đối tượng của đề lài.
-

Đối tượng: Game “SPIDER HUNTER” trên hệ điều hành Android
Phạm vi: Một số API,cách xử lý đồ họa và xử lý âm thanh, các thuật toán.
 Phương pháp nghiên cứu.

-

Đọc tài liệu về lập trình Game trên Android.

-

Tham gia thảo luận, hỏi đáp các diễn đàn chuyên môn, tham khảo code ví dụ,
hướng dẫn trên mạng Internet về thuật toán, cách xử lý các vấn đề gặp phải.
Tham gia thảo luận cùng sinh viên có chung đề tài.


-

Thực hiện lập trình game, rút ra kinh nghiệm từ thực tế.

 Dự kiến kết quả.
Chương trình demo chạy trên thiết bị thật.

 Ý nghĩa khoa học và thực tiễn.
Sản phẩm là một trò chơi cho điện thoại chạy hệ điều hành Android. Có thể
chia sẻ và upload lên chợ ứng dụng Android Market.

 Nội dung đồ án.
CHƯƠNG I: Cơ sở lý thuyết.
CHƯƠNG II: Phân tích, thiết kế hệ thống.
CHƯƠNG III: Chương trình game Spider Hunter.
Kết luận và hướng phát triển đề tài.
6


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan hệ điều hành Android và Game
1.1.1 Khái niệm hệ điều hành Anroid
Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõi Linux
do công ty Android Inc. (California, Mỹ) thiết kế. Công ty này sau đó
được Google mua lại vào năm 2005 và bắt đầu xây dựng Android
Platform. Các thành viên chủ chốt tại ở Android Inc. gồm có: Andy Rubin,
Rich Miner, Nick Sears, and Chris White.

Hình 1-1 Android timeline
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007,

hãng T-Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc
T-Mobile G1, chiếc smartphone đầu tiên dựa trên nền tảng Android. Một vài
ngày sau đó, Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK
release Candidate 1.0. Trong tháng 10 năm 2008, Google được cấp giấy phép
mã nguồn mở cho Android Platform.
Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành
lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng,
phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di
động trong tương lai. Từ tháng 10 năm 2008, hệ điều hành Android đã chính thức
trở thành phần mềm mã nguồn mở. Điều đó cho phép các hãng điện thoại có thể
đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điện
7


thoại của họ và điều quan trọng nữa là hệ điều hành mở này hoàn toàn miễn phí,
không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí phát triển hệ điều hành.
1.1.2 Kiến trúc Android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành
Android. Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây.

Hình 1-2 Kiến trúc Android
Hệ điều hành android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux
tầng Libraries & Android runtime , tầng Application Framework và trên cùng là
tầng Application.
1.1.2.1 Tầng Application
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như
Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện(phone), quản
lý danh bạ(Contacts), duyệt web (Browser),nhắn tin(SMS),lịch làm việc (Calendar),
đọc e-mail (Email-Client), bản đồ(Map), quay phim chụpảnh(camera)... Các ứng
dụng được cài thêm như các phần mềm chứng khoán (Stock), các trò chơi, từ điển…

Các ứng dụng viết sẽ có những đặc tính sau:
8


-

Viết bằng Java, phần mở rộng là .apk

-

Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được
dựng lên để phục vụ cho nó. Nó có thể là một Active Program : Chương
trình có giao diện với người sử dụng hoặc là một background : chương
trình chạy nền hay là dịch vụ.

-

Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm,có thể có nhiều chương trình cùng chạy một lúc.

-

Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động

1.1.2.2 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ểmtruy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động.


Hình 1-3 Kiến trúc tầng Application Framework
Tầng này 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,…



Một “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 (chẳng hạn như Contacts) hoặc là chia sẻ
dữ liệu giữa các ứng dụng đó.



Một “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ư: localized strings,
9


graphics,..


Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển
thị các custom alerts trong status bar.



Activity Maanager được dùng để quản lý chu trình sống của ứng
dụng và điều hướng các activity.


1.1.2.3 Tầng Android Runtime and Libraries
Tầng này gồm 2 phần là Libraries và Android Runtime:

Hình 1-4 Kiến trúc tầng Android Runtime and Libraries
 Phần 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. Một số các thư viện cơ bản
được liệt kê dưới đây:



Thư viện hệ thống (System C library)(Libc) : Thư viện dựa trên chuẩn C
Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phát và

ghi các loại định dạng âm thanh, hình ảnh, video thông dụng.
• Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên
web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse)
cũng như để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ
được nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM,





AJAX..
Surface Manage: Quản lý hiển thị 2D và 3D.
SGL công nghệ 2D
SQLite : Quản lý database của ứng dụng.

Free Type : Dùng cho hiển thị ảnh,font.

10




SSL(Secure Socket Layer): Tầng thiết lập giao dịch an toàn trên 2 ứng dụng

trên 1 cổng (socket).
• Open GL/EL: Hỗ trợ thư viện tùy chọn 3D tĩnh và động
 Phần Android Runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ
Java có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java
trên máy tính thường. Thứ nhất là các thư viện lõi (Core Library) , chứa các lớp
như JAVA IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik
Virtual Machine)
1.1.2.4 Tầng hạt nhân Linux
Hệ điều hành android được phát triển dựa trên hạt nhân linux, cụ thể là
hạt nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả
mọi hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức
cấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp
với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình
(process).

Hình 1-5 Kiến trúc tầng hạt nhân Linux
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được
nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm
tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu
cầu kết nối mạng không dây...

11




Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu nhận








những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng...) .
Camera Driver : Điều kiển hoạt động của camera
Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth.
USB driver : Quản lý hoạt động của các cổng giao tiếp USB.
Keypad driver : Điều khiển bàn phím.
Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi.
Audio Driver : Điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu

dạng audio thành tín hiệu số và ngược lại.
• Power Madagement : Giám sát việc tiêu thụ điện năng.
• M-System Driver : Quản lý việc đọc ghi lên các thiết bị bộ nhớ như thẻ
SD,flash.
1.1.3 Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper
Tool (ADT). Các Android coder sẽ cần phải sử dụng công cụ IDE (Integrated
Development Enveronment) này để phát triển, debugging và testing cho ứng

dụng. Tuy nhiên, các coder cũng có thể không cần phải sử dụng IDE mà thay
vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator
như thường.
Android Emulator được trang bị đầy đủ hầu hết các tính năng của một
thiết bị thật. Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB,
camera và video, nghe phone, nguồn điện giả lập và bluetooth.
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã
nguồn mở, công nghệ này được gọi là QEMU được phát triển bởi Fabrice
Bellard.

12


Hình 1-6 Android emulator
1.1.4 Các thành phần trong một Android Prject
-

Activity
Hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng. Khi khởi động

1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển
thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.
-

Content Provider
Kho dữ liệu chia sẻ Content Provider được sử dụng để quản lý và chia sẻ

dữ liệu giữa các ứng dụng.
-


Intents
Nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các

thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn
mong muốn. VD: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1 activity mới
hiển thị trang web đó.
-

Services
Thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu,

đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng
thấy.
- Broadcast Receiver
Thành phần thu nhận các Intent bên ngoài gửi tới. VD: bạn viết 1 chương
trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1
Broadcast Receiver để nhận biết các Intent là các cuộc gọi tới.
-

Notification
Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt

động.Activity, Service, Broadcast Receiver và Content Provider mới là những
thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong
androidManifest
-

File AndroidManifest

13



Trong khung package Explorer, ở phía dưới thư mục res, bạn sẽ thấy file
có tên là AndroidManifest.xml. Mỗi ứng dụng đều cần có file này để mô tả
những thông tin quan trọng của nó cho hệ thống android biết.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" />package="at.exam"
android:versionCode="1"
android:versionName="1.0">

android:icon="@drawable/icon"

android:label="@string/app_name">
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
Cụ thể những công việc mà AndroidManifest.xml thực hiện :
- Đặt tên cho java package của ứng dụng. Mô tả các thành phần của ứng
dụng : activity, service, broadcast receiver hoặc content provider.
- Thông báo những permission mà ứng dụng cần có để truy nhập các
protected API và tương tác với các ứng dụng khác.

- Thông báo level thấp nhất của Android API mà ứng dụng cần để chạy.
(Android 1.0 là level 1, 1.1 là level 2, 1.5 là level 3, 1.6 là level 4

14


1.1.5 Chu kỳ sống của một ứng dụng Android
Trong mỗi ứng dụng Android có chứa nhiều thành phần và mỗi thành
phần đều có một chu trình sống riêng. Và ứng dụng 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 với 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ư là Service, Broadcast receiver. Có nghĩa là thành phần không
tương tác với người dùng có thể chạy nền dưới sự giám sát của HDH cho đến khi
người dùng tự tắt chúng.
Thời gian sống của Activity :

Hình 1-7 Lược đồ vòng đời của một Activity
1.1.5.1 Chu kỳ ứng dụng của Android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho
ứng dụng khi codes cần được chạy và sẽ còn chạy cho đến khi hệ thống cần lấy
lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác.
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống
15


của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó. Thay
vào đó, nó được xác định bởi hệ thống qua một kết hợp của những phần của

ứng dụng mà hệ thống biết đang chạy và những phần quan trọng đối với người
dùng cùng với những vùng nhớ chiếm lĩnh trong hệ thống.
1.1.5.2 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, 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

Hình 1-8: Chu kỳ sống thành phần
1.1.5.3 Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack. Khi
một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity
đang chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt
quá trình activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển
lên và trở thành active.

16


Hình 1-9 Activity stack

1.1.5.4 Các trạng thái của chu kỳ sống

Hình 1-10: Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
17


+Active hoặc running: Khi Activity là được chạy trên màn hình. Activity này

tập trung vào những thao tác của người dùng trên ứng dụng.
+Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người
dùng vẫn trông thấy. Một Activity tạm dừng là còn sống nhưng có thể bị kết
thúc bởi hệ thống trong trường hợp thiếu vùng nhớ.
+Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác.
1.1.5.5 Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ
thông tin khác của nó từ vùng nhớ bởi việc gọi hàm finish() của nó, hoặc đơn
giản giết tiến trình của nó. Khi nó được hiển thị lần nữa với người dùng, nó
phải được hoàn toàn restart và phục hồi lại trạng thái trước. Khi một Activity
chuyển qua chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó
bằng việc gọi hàm transition.

Hình 1-11: Các phương thức trong chu kỳ ứng dụng
Tất cả các Activity bắt buộc phải có onCreate() để khởi tạo ứng dụng.
Nhiều Activity sẽ cũng hiện thực onPause() để xác nhận việc thay đổi dữ
liệu và mặt khác chuẩn bị dừng hoạt động với người dùng.
1.1.5.6 Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống 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().
1.1.5.7 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
18


đế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.5.8 Các phương thức của chu kỳ sống
 Phương thức onCreate(): Được gọi khi activity lần đầu tiên được tạo.

Khởi tạo các view, kết nối dữ liệu đến list. Phương thức này gửi qua một
đối tượng Bundle chứa đựng từ trạng thái trước của Activity
 Phương thức onRestart(): được gọi sau khi activity đã được dừng,
chỉ một khoảng đang khởi động lần nữa (stared again).Luôn theo sau
bởi onStart()
 Phương thức onStart(): được gọi trước khi một activity visible với
người dùng.Theo sau bởi onResume() nếu activity đến trạng thái
foreground hoặc onStop() nế nó trở nên ẩn.
 Phương thức onResume(): được gọi trước khi activity bắt đầu tương
tác với người dung và luôn theo sau bởi onPause().Tại thời điểm này
activity ở trên dỉnh của stack activity.
 Phương thức onPause(): được gọi khi hệ thống đang resuming activity
khác.Phương thức này là điển hình việc giữ lại không đổi dữ liệu.Nó nên
được diễn ra một cách nhanh chóng được resumed ngay cho đến khi nó
trở lại. Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi
onStop nếu nó trở nên visible với người dùng.
 Phương thức onStop(): được gọi khi activity không thuộc tầm nhìn của

người dùng. Được theo sau bởi onRestart() nếu activity đang đở lại
để tương tác với người dùng, hoặc onDestroy() nếu activity đang bỏ.
 Phương thức onDestroy(): được gọi trước khi activity bị hủy. Đó là lần
gọi cuối cùng mà activity này được nhận.
1.1.6 Các thành phần giao diện trong Android
1.1.6.1 View
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
19


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ề,…
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 XML lên để phân tích thành mã bytecode.

Hình 1-12: Cấu trúc một giao diện ứng dụng Android
1.1.6.2 ViewGroup
ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup
chính là các widget Layout được dùng để bố trí các đối tượng khác trong
một screen. Có một số loại ViewGroup như sau:
 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ào kích
thước của màn hình.

20


Hình 1-13: Bố trí các widget sử dụng LinearLayout
 FrameLayout


FrameLayout được dùng để bố trí các đối tượng theo kiểu giống như là
các Layer trong Photoshop. Những đối tượng nào thuộc Layer bên dưới thì sẽ
bị che khuất bởi các đối tượng thuộc Layer nằm trên. FrameLayer thường được
sử dụng khi muốn tạo ra các đối tượng có khung hình bên ngoài chẳng hạn như
contact image button.

Hình 1-14: Bố trí các widget trong FrameLayout
 AbsoluteLayout

21


Layout này được sử dụng để bố trí các widget vào một vị trí bất kì trong
layout dựa vào 2 thuộc tính toạ độ x, y. Tuy nhiên, kiểu layout này rất ít khi
được dùng bởi vì toạ độ của các đối tượng luôn cố định và sẽ không tự điều
chỉnh được tỷ lệ khoảng cách giữa các đối tượng.
 RetaliveLayout

Layout này cho phép bố trí các widget theo một trục đối xứng ngang
hoặc dọc. Dựa vào những mối 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 mà RetaliveLayout cũng không phụ thuộc vào
kích thước của screen thiết bị. Ngoài ra, nó còn có ưu điểm là giúp tiết kiệm
layout sử dụng nhằm mục đích giảm lượng tài nguyên sử dụng khi load đồng
thời đẩy nhanh quá trình xử lý.

Hình 1-15 Bố trí widget trong RetaliveLayout
 TableLayout

Layout này được sử dụng khi cần thiết kế một table chứa dữ liệu hoặc

cần bố trí các widget theo các row và column. Chẳng hạn như, giao diện của
một chiếc máy tính đơn giản hoặc một danh sách dữ liệu.

22


Hình 1-16: Bố trí widget trong TableLayout
1.1.6.3 Button
Sở dĩ widget button được giới thiệu đầu tiên trong số các widget khác là vì
đây là đối tượng có thể nói là được dùng nhiều nhất trong hầu hết các ứng dụng
Android. Để custom một widget nào đó ta phải tạo một class kế thừa từ class
Widget muốn custom, sau đó sử dụng hàm draw để vẽ lại widget đó như một
Canvas.


ImageButton cũng tương tự như Button, ImageButton chỉ có thêm một
thuộc tính : android:src = “@drawable/icon” để thêm hình ảnh vào và
không có thẻ text
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cmdButton1"
android:src="@drawable/icon"
android:onClick="touchMe"/>

Hình 1-17 ImageButon
1.1.6.4 ImageView
Được dùng để thể hiện một hình ảnh. Nó cũng giống như ImageButton,
chỉ khác là không có hình dáng của một cái button.
Code:

23


ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.icon);

Hình 1-18 ImageView và ImageButton
1.1.6.5 ListView
Được sử dụng để thể hiện một danh sách các thông tin theo từng cell. Mỗi
cell thông thường được load lên từ một file XML đã được cố định trên đó số
lượng thông tin và loại thông tin cần được thể hiện.
Để thể hiện được một list thông tin lên một screen thì cần phải có 3 yếu tố chính:
 Data Source: Data Source có thể là một ArrayList, HashMap hoặc bất kỳ

một cấu trúc dữ liệu kiểu danh sách nào.
 Adapter: Adapter là một class trung gian giúp ánh xạ dữ liệu trong Data

Source vào đúng vị trí hiển thị trong ListView.
 ListView: ListView là đối tượng để hiển thị các thông tin trong Data

Source ra một cách trực quan và người dùng có thể thao tác trực tiếp trên
đó.

24


Hình 1-19 Minh hoạ cho một ListView
1.1.6.6 TextView
TextView ngoài tác dụng là để hiển thị văn bản thì nó còn cho phép
định dạng nội dung bằng thẻ html.

VD:
TextView textView = (TextView)findViewById(R.id.textView);
CharSequence styledText = Html.fromHtml("<i>This</i> is some
<b>styled</b> <s>text</s>");
textView.setText(styledText);
Nội dung TextView cũng có thể được định dạng bằng thẻ html ngay trong
XML.
1.1.6.7 EditText
Trong Android đối tượng EditText được sử dụng như một TextField
hoặc một
TextB
ox.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dip"
android:textColor="#000000"
android:text="Hello
Android!"android:singleLine="true"
android:inputType="textCapWords"/>
Các thuộc tính cần chú ý sử dụng EditText đó là:
+ android:inputType = “…” sử dụng để xác định phương thức nhập cho
EditText. Chẳng hạn như khi bạn muốn một ô để nhập password hay một ô để
nhập Email thì thuộc tính này sẽ làm điều đó.

25


×