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

Xây dựng chương trình nghe nhạc mp3 online trên 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.57 MB, 59 trang )

MỤC LỤC


LỜI MỞ ĐẦU
Ngày nay, với những ứng dụng trên điện thoại càng nhiều và sự phát triển của
các ứng dụng cho hệ điều hành Android cũng không ngừng phát triển. Đề tài phát
triển ứng dụng cho hệ điều hành Android đang là đề tài “hót” hiện nay.
Do nhu cầu ứng dụng lý thuyết đã học ở trường vào trong cuộc sống nên chúng
em đã chọn đề tài “Xây dựng chương trình nghe nhạc mp3 online trên Android”
để làm đồ án tốt nghiệp.
Sau một thời gian học tập và rèn luyện, với sự chỉ bảo tận tình của thầy giáo Lê
Trung Hiếu cùng sự trợ giúp của các bạn trong nhóm và các tài liệu có liên
quan,chúng em đã hoàn thành xong đề tài.
Đồ án đã hoàn thành xong, nhưng không thể tránh nhiều thiếu sót mong thầy cô
giáo thông cảm và chỉ bảo thêm để đề tài có thể ứng dụng rộng rãi trong thực tế.
Em xin chân thành cảm ơn các thầy cô!

2


DANH SÁCH TỪ VIẾT TẮT
Từ viết tắt
AVD

Từ đầy đủ
Android Virtual Device

Giải thích
Thiết bị máy ảo trong Android

ADT


MP

Manager
Android Developer Tools
MediaPlayer

Công cụ phát triển Android
Trình nghe nhạc

3


DANH SÁCH CÁC HÌNH

4


5


CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI (Chuong)
1.1. Lý do chọn đề tài (Muc 1)
Trong những năm gần đây, Android là sự lựa chọn cho điện thoại di động. Giải
pháp về lập trình Android đã được nhiều công ty, doanh nghiệp phần mềm quan
tâm. Tuy nhiên những ứng dụng Android cũng có mặt hạn chế nhất định như: chỉ
chạy trên nền tảng của Android, đòi hỏi người dùng phải có nhiều kỹ năng về lập
trình, thực thi còn chậm. Ở Việt Nam hiện cũng đang có cộng đồng phát triển về
Android.
Sự phát triển mạnh mẽ của Android đã chiếm lĩnh đa số thị trường sản phẩm
phần mềm điện thoại. Số lượng các cá nhân, tổ chức sử dụng ứng dụng Android

ngày càng nhiều, một đơn vị thiết kế ứng dụng Android cần có một giải pháp tối ưu
cho việc tạo ra phần mềm một cách nhanh nhất đáp ứng yêu cầu của khách hàng.
Thực tế hiện nay, một số giải pháp thiết kế ứng dụng trên nền tảng Android
cũng có mặt hạn chế nhất định như: thiết kế cồng kềnh và phức tạp, khó khăn trong
việc phát triển và bảo trì, đòi hỏi người lập trình phải có nhiều kỹ năng về lập trình,
thực thi còn chậm. Để tránh sự lặp lại trong công việc thiết kế, tiết kiệm thời gian và
giảm chi phí cho đơn vị phát triển ứng dụng cần phải xây dựng giải pháp thiết kế
hợp lý.
1.2. Mục tiêu của đề tài
Hiểu được những Control cơ bản của Android, có thể lập trình được những
ứng dụng trên hệ điều hành Android.
Tìm hiểu cơ bản về Android và xây dựng được một ứng dụng trên nền tảng
Android là: ứng dụng nghe nhạc online, cho phép hát những bài hát online.
1.3. Giới hạn và phạm vi của đề tài
Đề tài xây dựng một ứng dụng nghe nhạc online sử dụng các công nghệ mới
trong lập trình Android và Công cụ lập trình Eclipse SDK.
1.4. Nội dung thực hiện
Hiện một số giải pháp thiết kế ứng dụng trên nền tảng công nghệ Java nhưng
còn có những mặt hạn chế nhất định như: thiết kế phức tạp, khó khăn trong việc
6


phát triển và bảo trì, thực thi còn chậm. Để tránh sự lặp lại trong công việc thiết kế,
tiết kiệm thời gian và giảm chi phí cho đơn vị phát triển phần mềm, tác giả đề xuất
giải pháp xây dựng ứng dụng.
Nội dung thực hiện/nghiên cứu cụ thể như sau:
-

Nghiên cứu sâu hơn và kĩ hơn về Java để có nền tảng vững chắc.


-

Phân tích yêu cầu và đề xuất giải pháp MediaPlayer trên công nghệ Java,
Android

-

Thiết kế đặc tả hệ thống.

-

Lập trình cho các Module của ứng dụng.

-

Kiểm thử ứng dụng.

-

Triển khai thực nghiệm hệ thống trên mạng Internet.
1.5. Phương pháp tiếp cận
-

Cách tiếp cận: Nghiên cứu về Java. Vì Java là nền tảng của Android.

-

Sử dụng các phương pháp nghiên cứu:
o Phương pháp đọc tài liệu
o Phương pháp phân tích code

o Phương pháp demo code
o Phương pháp auto test

7


CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

8


2.1. Tổng quan về Android
2.1.1. Android là gì? (Muc 11)
Android là một “Hệ Điều Hành” được cài đặt trên một số phần cứng riêng biệt
mà ở đây chủ yếu là cài đặt trên các thiết bị smartphone (của SamSung, LG, HTC,
Motorola…). Cũng giống như các hệ điều hành khác trên điện thoại (window phone
7, ios, blackberry…), Android là một hệ điều hành dành cho điện thoại được viết từ
java, mã nguồn mở hoàn toàn giúp có các lập trình viên cài đặt các ứng dụng trên
thiết bị do chính mình viết ra.
Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. 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.
2.1.2. Lịch sử phát triển của Android
Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới thành
lập có trụ sở ở Palo Alto, California, Mỹ. Những nhà đồng sáng lập của Android
chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty
Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears
(từng là phó chủ tịch của T-Mobile), và Chris White (trưởng nhóm thiết kế và phát
triển giao diện tại WebTV). Khi đó, có rất ít thông tin về các công việc của Android,

ngoại trừ việc họ đang phát triển phần mềm cho điện thoại di động. Điều này tạo
những tin đồn về việc Google có ý định bước vào thị trường điện thoại di động.
Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị di động
dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm tay và
các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả
năng nâng cấp mở rộng cao. Một số nguồn tin cho biết trước đó Google đã lên danh
sách các thành phần phần cứng và các đối tác phần mềm, đồng thời ra hiệu với các
nhà mạng rằng họ sẵn sàng hợp tác ở nhiều cấp độ khác nhau. Ngày càng nhiều suy
đoán rằng Google sẽ tham gia thị trường điện thoại di động xuất hiện trong tháng 12
năm 2006. Tin tức của BBC và Nhật báo phố Wall chú thích rằng Google muốn đưa
9


công nghệ tìm kiếm và các ứng dụng của họ vào điện thoại di động và họ đang nỗ
lực làm việc để thực hiện điều này. Các phương tiện truyền thông in và online cũng
sớm có bài viết về những tin đồn cho rằng Google đang phát triển một thiết bị cầm
tay mang thương hiệu Google. Và lại càng có nhiều suy đoán sau bài viết về việc
Google đang định nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà
sản xuất điện thoại di động và nhà mạng.
2.1.3. Tính năng mở của hệ điều hành Android.
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứng dụng di
động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp. Nó được xây dựng
để được thực sự mở. Ví dụ, một ứng dụng có thể kêu gọi bất kỳ chức năng lõi của
điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằng cách sử
dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và nhiều hơn
nữa những kinh nghiệm cố kết cho người dùng. Android được xây dựng trên mở
Linux Kernel. Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưu
hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di động. Android là mã
nguồn mở, nó có thể được liberally mở rộng. Nền tảng này sẽ tiếp tục tiến triển
như cộng đồng nhà phát triển công việc cùng nhau để xây dựng các ứng dụng di

động sáng tạo.
2.2. Tổng quan về phần mềm Eclipse.
2.2.1. Eclipse là gì?
Eclipse là một nền tảng phát triển mã nguồn mở dựa trên Java có thể mở rộng
được. Eclipse bao gồm một tập hợp các dịch vụ để xây dựng các ứng dụng từ các
thành phần plug-in. Eclipse được tạo thành bởi một tập hợp các plug-in chuẩn JDT
(Java Development Tools).
Dự án Eclipse được IBM bắt đầu vào tháng 11 năm 2001. Các dự án của Eclipse
tập trung vào việc xây dựng nền tảng mã nguồn mở bao gồm các framework có thể
mở rộng, các tool và thư viện để xây dựng, triển khai và quản lý các phần mềm.
Eclipse là một tổ chức phi lợi nhuận, là nơi phát triển cộng đồng mã nguồn mở
và hệ thống các sản phẩm, dịch vụ. Những người phát triển plug-in cho Eclipse

10


hoặc những người sử dụng Eclipse như là nền tảng cho các ứng dụng phát triển
phần mềm cần tuân thủ giấy phép EPL.
Download, cài đặt Eclipse: />2.2.2. Kiến trúc Eclipse
Kiến trúc Eclipse nền tảng bao gồm nhiều thành phần. Các chức năng của thành
phần lõi tách biệt với các chức năng của phần giao diện. Kiến trúc Eclipse được
thiết kế và xây dựng để đáp ứng các yêu cầu sau:
-

Hỗ trợ việc xây dựng các công cụ khác nhau để phát triển ứng dụng
Hỗ trợ các công cụ để thao tác trên bất kỳ loại nội dung nào
Hỗ trợ tích hợp các công cụ một cách dễ dàng
Hỗ trợ môi trường phát triển ứng dụng giao diện và không giao diện
Chạy được trên nhiều hệ điều hành, gồm Window và Linux
Kiến trúc nền tảng Eclipse cung cấp các công cụ cùng cơ chế sử dụng và quy


định để có thể tích hợp các công cụ một cách dễ dàng. Những cơ chế này được thể
hiện thông qua giao diện API, lớp và phương thức. Ngoài ra, nền tảng Eclipse còn
cung cấp các framework để dễ dàng phát triển các công cụ mới.
Eclipse SDK gồm Eclipse Platform, JDT và PDE. JDT và PDE là các plug-in
được gắn vào Platform. Eclipse Platform được xây dựng dựa trên cơ chế “phát hiện,
tích hợp và chạy”. Plug-in là đơn vị chức năng nhỏ nhất có thể được phát triển và
phân phối một cách riêng biệt. Thông thường, công cụ nhỏ được viết trong một
plug-in riêng biệt và công cụ phức tạp được tách ra thành nhiều plug-in.
2.2.3. Các thao tác cơ bản trong Eclipse
2.2.3.1. Cách tạo Android Emulator.
-

Vào menu Windows/ chọn Android Virtual Device Manager hoặc click vào biểu
tưởng máy ảo trên thanh Toolbar:

11


Hình 2.1. Cửa sổ Android Virtual Device Manager
-

Cửa sổ Android Virtual Device Manager sẽ hiển thị ra như bên dưới:

12


Hình 2.2. Cửa sổ Android Virtual Device Manager
-


Để tạo một Android Emulator: click nút New (khoanh vùng màu đỏ):

Hình 2.3. Cửa sổ thiết lập thông số cho Android Emulator
-

Ở màn hình bên trên, ta thiết lập các thông số: Tên máy ảo, độ phân giải, API, bộ
nhớ trong, bộ nhớ ngoài (SD Card) rồi nhấn nút OK. Muốn lần tiếp theo khởi động
máy ảo nhanh thì ta checked vào mục Snapshot.

13


Hình 2.4. Những Android Emulator đã được tạo
Máy ảo avdnew đã được tạo ra, chú ý là khi một máy ảo được tạo ra thì nó sẽ được
lưu trữ vào user của máy tính đang hoạt động, ở hình trên thì lưu trong
“C:\Users\QuangKhanh\.Android\avd “. Máy của bạn cài đặt với user nào thì vào

14


đúng chỗ mà xem cấu trúc bên trong:

Hình 2.5. Nơi lưu trữ Android Emulator vừa tạo
-

Ở đây bạn chú ý là nếu bạn cấp dung lượng cho SD Card tại màn hình tạo máy
ảo bao nhiêu thì tập tin sdcard.img sẽ có dung lượng bấy nhiêu trong này (do đó
bạn phải cẩn trọng khi tạo SD Card đối với máy tính có dung lượng ổ cứng

-


khiêm tốn).
Tương tự bạn nhìn thấy tập tin snapshots.img, hiện giờ bạn chỉ thấy có 250kb,
nhưng nếu như bạn khởi động lần đầu tiên và vào đây quan sát thì dung lượng
của nó sẽ tăng lên rất lớn, mục đích để lưu trữ lại toàn bộ thông số để lần khởi

-

chạy thứ 2 cho lẹ.
 Chạy Android emulator.
Từ màn hình Android Virtual Device Manager, ta chọn tên máy ảo cần chạy rồi
nhấn nút Start:
15


Hình 2.6: Khởi động Android Emulator đã tạo

16


-

Bạn chờ khoảng một thời gian vài phút (hoặc lâu hơn tùy vào khả năng của
máy). Tùy vào cấu hình mà bạn chọn (API, độ phân giải…), Android Emulator
sẽ xuất hiện như bên dưới:

Hình 2.7: Hình ảnh Android Emulator khi khởi động xong
-

Khi máy ảo ở trên khởi động xong, bạn vào thư mục trong ổ C: nơi mà lưu trữ

máy ảo, bạn quan sát xem có những thư mục và tập tin mới nào được tạo ra. Sau
đó bạn tắt máy ảo này đi, tiếp tục quan sát bạn sẽ thấy tập tin Snapshots.img mà
em đề cập ở trên sẽ có dung lượng rất lớn.
2.3. Chu kì ứng dụng 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 run và sẽ còn chạy cho đến khi:
Nó không phụ thuộc.
Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
17


Một sự khác thường và đặc tính cơ bản của Android là thời gian sống 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
Những phần quan trọng như thế nào đối với người dùng
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống.
2.3.1. 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 2.8: Chu kỳ sống của ứng dụng Android

18


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


Hình 2.9: Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
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. Có nghĩa là một Activity mới ở trên nó nhưng không bao
phủ đầy màn hình. 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. Nó vẫn còn trạng thái
và thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại bỏ
trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác.

19


2.3.2. Chu kỳ sống của ứng dụng
Trong một ứ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 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, Broadcastreceiver. 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.
2.3.3. 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 finish() (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 2.10: Các sự kiện
Tất cả các phương thức là những móc nối mà bạn có thể override để làm tương
thich công việc trong ứng dụng khi thay đổi trạng thái. 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.
2.3.4. Các phương thức của chu kỳ sống

20


 Phương thức: onCreate()

-

Được gọi khi activity lần đầu tiên được tạo
Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đế 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

-

Luôn theo sau bởi onStart()

 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
Tại thời điểm này activity ở trên dỉnh của stack activity.
Luôn theo sau bởi onPause()

 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.

-

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.

-

Trạng thái của activity có thể bị giết bởi hệ thố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.
Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được
resumed và bao phủ nó.
21


 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.
Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm

thởi

bị hủy diệt để tiết kiệm vùng nhớ.
2.4. Các thành phần trong một AndroidProject
2.4.1. 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.
 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ư:
Androi :icon = “drawable resource”Ở đây đặt đường dẫn đến file icon của ứng dụng
khi cài đặt. VD: Android:icon = “@d rawab le/icon”.
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" />
22


Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
 SDK version

Thẻ xác định phiên bản SDK được khai báo như sau:
<uses-sdk Android:minSdkVersion="15" />.
Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện đang sử dụng.
2.4.2. FileR.java
FileR.java là một file tự động sinh ra ngay khi tạo ứng dụng, file nay đượ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 fileR.java được tự sinh khi bất kì một sự kiện nào xảy ra làm thay
đổi các thuộc tính ứng dụng. Chẳng hạn như bạn kéo và thả một file hình ảnh bên
ngoài 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 filer.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.


23


2.5. Các thành phần giao diện trong Android
2.5.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 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 XML lên để phân tích thành mã bytecode.

Hình 2.11: Cấu trúc một giao diện ứng dụng Android
2.5.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:

24


2.5.3. 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. 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.

Hình 2.12: Bố trí các widget sử dụng LinearLayout
2.5.4. 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.
Để đặ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. Dựa vào những mối ràng buộc đó 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ý.

25


×