1
Trường Đại học Bách Khoa Tp. HCM
Khoa Điện- Điện tử
Bộ môn Điện Tử
o0o
Cộng Hoà Xã Hội Chủ Nghĩa Việt Nam
Độc lập – Tự do – Hạnh phúc
o0o
THỰC TẬP TỐT NGHIỆP
Họ và tên: Nguyễn Hoàng Sang MSSV: 40902228
Nông Văn Hiếu MSSV: 40900822
Lớp DD09KSVT Ngành: Điện tử- Viễn thông
1.1. ĐẦU ĐỀ ĐỒ ÁN
TÌM HỆ ĐIỀU HÀNH ANDROID TẠI CÔNG TY TNHH KIẾN VIỆT
1.2. NHIỆM VỤ.
- Tìm hiểu kiến trúc HDH Android, môi trường hoạt động
- Lập trình Android trên thiết bị di động
- Giao tiếp giữa thiết bị Android và MCU định hướng phát triển luận văn
1. Ngày giao nhiệm vụ :
2. Ngày hoàn thành nhiệm vụ:
3. Họ và tên giáo viên hướng dẫn: ThS. BÙI QUỐC BẢO
4. Tên công ty thực tập: CÔNG TY TNHH KIẾN VIỆT
Nội dung và yêu cầu ĐA đã thông qua Bộ môn.
Ngày tháng năm
CHỦ NHIỆM BỘ MÔN GIÁO VIÊN HƯỚNG DẪN
PHẦN DÀNH CHO KHOA, BỘ MÔN
Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
2
NHẬN XÉT CỦA CÔNG TY THỰC TẬP
Ngày tháng năm
Giám đốc (đại diện)
3
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Ngày tháng năm
Giáo viên phản biện
4
LỜI CẢM ƠN
Qua một thời gian nghiên cứu và thực hiện, đến nay chúng em đã hoàn thành
chương trình thực tập với đề tài: “Tìm hiểu HDH Android tại công ty Kiến Việt” do
thầy Bùi Quốc Bảo hướng dẫn. Trong suốt thời gian nghiên cứu và thực hiện đề tài, em
đã gặp không ít khó khăn và đã nhận được sự giúp đỡ nhiệt tình và quý báu của thầy và
các kĩ sư bên công ty Kiến Việt.
Trước tiên, chúng em gửi lời cảm ơn sâu sắc tới thầy Bùi Quốc Bảo đã tin tưởng
giới thiệu em với CTY KIẾN VIỆT để thực tập. Chúng em cũng xin được gửi lời cảm
ơn chân thành tới các các anh kĩ sư bên CTY KIẾN VIỆT đã tạo điều kiện thuận lợi để
chúng em hoàn thành đúng tiến độ chương trình thực tập.
Do năng lực và thời gian còn hạn chế nên việc tìm thêm nhiều tài liệu cho quá
trình tìm hiểu và nghiên cứu còn thiếu sót. Em rất mong nhận được nhiều hơn nữa ý
kiến đóng góp của các thầy, sự chia sẻ tài liệu của các bạn sinh viên để chúng em có thể
hoàn thiện kiến thức của mình hơn.
Em xin chân thành cảm ơn!
5
Mục Lục
Mục Lục 5
Danh sách hình vẽ 8
1.
CHƯƠNG 1: TỔNG QUAN 9
1.1
Lịch sử hình thành 9
1.1.1
Lịch sử hình thành 9
1.1.2
Hướng phát triển trong tương lai 11
1.2
Môi trường cài đặt 12
1.2.1
Giới thiệu một số gói cần thiết 12
1.2.2
Làm quen với IDE 15
1.3
Các thành phần cơ bản của một ứng dụng Android 18
1.3.1
Activity 18
1.3.2
Service 20
1.3.3
ContentProvider 20
1.3.4
Broadcast Receiver 20
2.
CHƯƠNG 2: XÂY DỰNG GUI 22
2.1
Layouts 24
2.1.1
FrameLayout 25
2.1.2
LinearLayout 26
2.1.3
RelativeLayout 27
2.1.4
TableLayout 28
2.1.5
AbsoluteLayout 28
2.2
Các control cơ bản 29
2.2.1
Button 30
2.2.2
EditText và TextView 31
2.2.3
Checkboxes 32
6
2.2.4
Radio Button 33
2.2.5
Toast Notification và Alert Dialog 34
2.3
ListView 35
2.3.1
ListView với mảng dữ liệu định sẵn 35
2.3.2
ListView với ArrayList 37
2.3.3
CustomListview 39
3.
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG GTALK 42
3.1
Giới thiệu 42
3.1.1
Kiến trúc XMPP(Extensible Messaging and Presence Protocol) 42
3.1.2
Address trong XMPP 43
3.1.3
XMPP protocol 43
3.1.4
Giới thiệu về gói thư viện asmack.jar 44
3.2
Xây dựng project XMPPChatDemo 44
3.2.1
Code 44
3.2.2
Demo 50
4.
CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG STREAM AUDIO VÀ VIDEO 54
4.1
Giới thiệu về Audio trên Android 54
4.1.1
Định dạng hỗ trợ Audio 54
4.1.2
Khởi chạy Audio thông qua Intent 54
4.1.3
Xây dựng một ứng dụng Audio 56
4.2
Background and Networked Audio 59
4.2.1
Background Audio Playback 59
4.2.2
Networked Audio 59
4.3
Giới thiệu về Video playback 66
4.3.1
Định dạng hỗ trợ của Android 66
4.3.2
Cách mở một tập tin video lưu trữ trong SD card 66
7
4.3.3
Network video 66
4.3.4
Giao thức hỗ trợ HTTP và RTSP 67
4.3.5
Giao thức hỗ trợ HTTP và RTSP 68
5.
CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC VÀ ĐÁNH GIÁ HƯỚNG LUẬN VĂN 75
5.1
Kết quả đạt được 75
5.2
Hướng phát triển luận văn 75
8
Danh sách hình vẽ
Hình 1.1.1 Tỉ lệ sử dụng các phiên bản Android 11
Hình 1.1.2 Biểu đồ thể hiện thị phần của Android 11
Hình 1.2.1 Download JDK 12
Hình 1.2.2 Download ADT cho windown 13
Hình 1.2.3 Install Android SDK 14
Hình 1.2.4 Cấu trúc cây thư mục của một ứng dụng 15
Hình 1.2.5 Vùng thao tác với layout 15
Hình 1.2.6 Tạo máy ảo AVD device 16
Hình 1.2.7 Máy ảo AVD bản 4.2.2 17
Hình 1.2.8 Giao diện DDMS 17
Hình 1.2.9 Activity lifecycle 19
9
1. CHƯƠNG 1: TỔNG QUAN
1.1 Lịch sử hình thành
1.1.1 Lịch sử hình thành
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số
đầu phát HD, HD Player) phát triển bởi Google và dựa trên nền tảng Linux.
Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được
Google mua lại vào năm 2005). Theo NPD, thiết bị di động sử dụng hệ điều hành
Android bán được tại Mỹ trong quý II năm 2010 xếp vị trí đầu tiên với 33%, thứ
2 là BB os với 28% và iOS ở vị trí thứ 3 với 22%. Android có một cộng đồng
những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình. Hiện
tại có khoảng 1000,000 ứng dụng cho Android OS và vào khoảng 1000,000
ứng dụng đã được đệ trình, điều này khiến Android trở thành hệ điều hành di
động có môi trƣờng phát triển lớn thứ 2. 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. Google công bố hầu hết các mã
nguồn của Android theo bản cấp phép Apache. Hệ điều hành Android bao gồm
12 triệu dòng mã; 3 triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu mã JAVA và
1.75 triệu dòng mã C++.Chi tiết lịch sử phát triển như sau:
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
10
độ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 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.Tháng 9 năm 2007, Information Week đăng tải một nghiên cứu
của Evalueserve cho biết Google đã nộp một số đơn xin cấp bằng sáng chế
trong lĩnh vực điện thoại di động
11
Hình 1.1.1 Tỉ lệ sử dụng các phiên bản Android
Hình 1.1.2 Biểu đồ thể hiện thị phần của Android
1.1.2 Hướng phát triển trong tương lai
Hiện tại thì Android đang rất phát triển, là Google sẽ tích hợp điện toán đám
mây trên hệ điều hành Android và bảo mật dữ liệu. Là mã nguồn mở nên việc
bảo mật dữ liệu là rất khó nên google sẽ dành nhiều thời gian cho vấn đề này
12
1.2 Môi trường cài đặt
1.2.1 Giới thiệu một số gói cần thiết
1.2.1.1 Java SE Development Kit(JDK)
Java SE là hệ thống nền tảng Java và thường được cài đặt lên máy PC hay laptop
để tiện lợi cho các nhà lập trình tiến hành phát triển các ứng dụng có nền tảng java.
Android SDK là bộ phát triển ứng dụng Android trên nền Java và nó đòi hỏi
Java SE JDK phiên bản 5 hay cao hơn. Hiệp hội các thiết bị cầm tay mở và Google
chọn Java là nền tảng để xây dụng Android không chỉ có lí do là nó là mã nguồn
mở mà còn có lí do quan trọng không kém là nó được hỗ trợ trên nhiều hệ điều
hành khác nhau từ Windows, Macintosh(x86), Solaris cho đến Linux.
Hình 1.2.1 Download JDK
Trên Java SE JDK là nền tảng, còn để lập trình trên Java thì có nhiều môi trường
phát triển phần mềm (IDE) chẳng hạn như Eclipse, Netbean…
13
1.2.1.2 Giới thiệu về plugin ADT(Android Development Tools)
ADT là plugin mở rộng được tích hợp vào môi trường phát triển phần mềm
Eclipse. Nó cho phép ta tạo và kiểm lỗi ứng dụng Android dễ dàng hơn và nhanh
chóng hơn. Cho phép ta thực hiện các công việc sau:
Truy xuất trực tiếp đến các công cụ phát triển Android khác bên trong
Eclipse. Ví dụ, ADT cho phép truy xuất đến chức năng của công cụ DDMS
như: chụp màn hình, quản lý liên kết với thiết bị, đặt điểm dừng để kiểm lỗi, và
xem thông tin các luồng và tiến trình trự tiếp từ Eclipse.
Nó cung cấp New Project Wizard, mà giúp ta tạo và thiết lập tất cả các
tập tin cơ bản cần thiết cho một ứng dụng Android mới.
Nó tự động hóa và làm đơn giản hóa tiến trình xây dựng ứng dụng
Android.
Nó cung cấp trình biên tập mã lệnh Android mà giúp ta viết lệnh
XML cho tập tin AndroidManifest và các tập tin tài nguyên khác.
Xuất ra tập tin .apk “đã đăng ký” (signed) hoặc “chưa đăng ký”
(unsigned) để mà phân phối ứng dụng cho người dùng cuối.
1.2.1.3 Sử dụng ADK
Sau khi cài đặt xong nền tảng JDK ta tải về Eclipse ADT. ADT tích hợp sẵn
trong phiên bản này tại địa chỉ :
/>
Hình 1.2.2 Download ADT cho windown
14
Chọn đúng hệ điều hành và tải về, sau đó giải nén chạy eclipse.exe. Sau đó ta
tiến hành install Android SDK cho eclipse. Chú ý chỉ cài những version cần thiết.
Hình 1.2.3 Install Android SDK
Như vậy ta đã thiết lập đầy đủ điều kiện để tiến hành lập trình ứng Android
15
1.2.2 Làm quen với IDE
1.2.2.1 Project explorer
MainActivity.java và main.xml:
Khi một ứng dụng được tao ra thì thông
thường sẽ có một Activity để khởi chạy
ứng dụng. Ta hiểu rằng MainActivity.java
chính là class chứa toàn bộ source code,
còn main.xml chính là phần giao diện. Đối
với Android khi một Activity tạo ra thì
thường nó đi kèm với một layout riêng.
Bất kì một Activity nào muốn
được triệu gọi thành công trong Android
Project thì bắt buộc nó phải được khai báo
trong tập tin AndroidManifest.xml. Nếu
như không khai báo Activity mà gọi đến nó
thì chương trình sẽ bị lỗi và tắt.
Mở thư mục R.java. Thư mục gen
là thư mục do Android tự động tạo ra. Tất
cả những giao diện hay thiết lập string.xml,
menu. Mọi thứ liên quan tới resource đều
được sinh ra trong R.java. Dựa vào đây để
ta có thể truy xuất các đối tượng trong
coding
Thư mục Drawable : chứa các tài nguyên mà ta đưa vào project ví dụ như
file nhạc, file hình ảnh
Outline : vùng này nằm bên góc phải màn hình chứa các tiêu đề hay các
tên hàm một cách gọn nhất để dễ dàng quan sát và quản lí code
Quan sát file main.xml :
Hình 1.2.5 Vùng thao tác với layout
Hình 1.2.4 Cấu trúc cây thư mục của
một ứng dụng
16
Vùng này bao gồm:
o Chứa các control, layout, componet…muốn sử dụng thì kéo và thả vào
vùng giao diện
o Vùng giao diện chính là vùng mà ta cần thiết kế
o Các tùy chọn chế độ hiện thị cho layout đang làm việc như đứng hay
ngang, zoom in hoặc zoom out
o Vùng properties :Vùng này thiết lập các thuộc tính cho các control được
kéo thả vào giao diện
1.2.2.2 DDMS và máy ảo AVD (Android Virtual Device)
Chọn Window=> Android virtual Device Manager => new và thiết lập các
thông số như hình sau:
Hình 1.2.6 Tạo máy ảo AVD device
Chọn start để khởi động máy ảo :
17
Hình 1.2.7 Máy ảo AVD bản 4.2.2
Vào window => open perspective => DDMS
Hình 1.2.8 Giao diện DDMS
18
o Cửa sổ device bên trái cho biết thiết bị thật hay ảo này đang kết nối với
ADT và nhưng app nào đang chạy trên thiết bị
o Cửa sổ bên phải là File Explorer cho thấy hệ thống các file trong thiết bị
bao gồm cả Sdcard ta có thể nạp file vào sdcard hay lấy file dữ liệu ra thông qua
màn hình này
o Dưới cùng là màn hình longcat cho phép ta theo dõi tiến trình nào đang
chạy hoặc lỗi xảy ra, rất tiện dụng cho việc phát hiện và kiểm tra code
1.3 Các thành phần cơ bản của một ứng dụng Android
1.3.1 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. Để hiểu được
cách thức hoạt động của một Activity ta quan sát vòng đời của nó
19
Hình 1.2.9 Activity lifecycle
20
1.3.2 Service
Một service là một thành phần chạy ẩn (runs in the background) để thực hiện các
thao tác chạy lâu dài hoặc điều khiển các tiến trình. Service thì không có giao
diện người dùng.
Ví dụ: Một service phát nhạc (không cần giao diện ) trong khi người dùng đang
sử dụng một ứng dụng khác, hoặc nó trao đổi dữ liệu qua mạng mà không làm
ngăn cản sự tương tác của người dùng với một activity. Một thành phần khác,
chẳng hạn như một activity, có thể start service và tương tác với nó.
Một service được implement như là một subclass của lớp Service
1.3.3 ContentProvider
Một content provider quản lý một tập hợp dữ liệu chia sẻ của ứng dụng. Ta có
thể lưu trữ dữ liệu trong file hệ thống, một cơ sở dữ liệu SQLite, trên web hay bất
kỳ nơi lưu trữ nào khác mà ứng dụng của bạn có thể truy cập. Thông qua content
providers, các ứng dụng khác có thể truy vấn hoặc thậm chí sửa đổi dữ liệu ( nếu
content provider cho phép điều đó ).Ví dụ, hệ thống Android cung cấp một content
provider quản lý các thông tin liên hệ của người dùng. Như vậy, bất kỳ ứng dụng
nào được cấp quyền truy vấn đến một phần của content provider ( chẳng hạn như
ContactsContract.Data) có thể đọc và ghi thông tin về một người cụ thể.Content
providers cũng rất hữu ích trong việc đọc và ghi dữ liệu riêng tư cho ứng dụng và
không chia sẻ nó. Một content provider được implement như là một subclass của
ContentProvider và phải implement một tập hợp chuẩn các APIs cho phép ứng
dụng khác có thể thực hiện giao dịch.
1.3.4 Broadcast Receiver
Một broadcast receiver là một thành phần phản ứng với các thông báo từ bên
ngoài gửi tới hệ thống. Nhiều broadcasts có nguồn gốc từ hệ thống chẳng hạn, một
broadcast thông báo các màn hình đã tắt, pin yếu, hoặc chụp hình. Các ứng dụng
cũng có thể khởi tạo các broadcast ví dụ, để cho các ứng dụng khác biết được rằng
một số dữ liệu đã được tải về thiết bị và sẵn sàng để sử dụng. Mặc dù broadcast
không hiển thị 1 giao diện người dùng, chúng có thể tạo một thông báo trên thanh
trạng thái để cảnh báo người dùng khi có một sự kiện broadcast xảy ra. Thông
21
thường hơn, một broadcast receiver là một “cửa ngõ” (gateway) cho các thành
phần khác và được dự định để làm một số lượng tối thiểu các công việc. Ví dụ nó
có thể khởi tạo một service để thực hiện một vài công việc dựa trên các sự kiện.Một
broadcast receiver được implement như là một subclass của BroadcastReceiver và
mỗi broadcast được dẫn xuất như là một đối tượng Intent
22
2. CHƯƠNG 2: XÂY DỰNG GUI
Có thể nói hầu hết mọi ứng dụng trên thiết bị di động đều cần phải có một giao
diện người dùng (GUI) để cho phép người sử dụng có thể tương tác với thiết bị.
Cho nên đây là một phần quan trọng và căn bản để bắt đầu xây dựng một ứng
dụng Android. Trong phần này ta sẽ lần lượt tìm hiểu các thành phần giao diện
căn bản như:
Layout, Button, TextView, EditText…
Ta cũng sẽ tìm
hiểu các giao diện điều khiển nâng cao như ListView…
Tất cả các giao diện người dùng được thực thi trong Android app đều được xây dựng
lên từ dối tượng
View
và
ViewGroup.
Một
View
là một đối tượng xuất hiện trên màn
hình mà người dùng có thể tương tác với nó. Một
ViewGroup
là đối tượng mà bao gồm
các
View
hoặc
ViewGroup
khác để định nghĩa lớp giao tiếp.
Giao diện người dùng được xây dựng theo kiểu cây phân cấp, cấu tạo nên từ các đối
tượng
View và ViewGroup được chỉ ra trong hình vẽ. Mỗi ViewGroup xem như một
nhóm các
View
và
ViewGroup
con. Trong khi
View
và
ViewGroup
con có thể là
điểu khiển đầu vào (Input control) hoặc đơn giản chỉ là một phần của giao diện hiện thị.
23
Ví dụ: Bố trí đơn giản của một layout cơ bản
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
Đây là outline:
Đây là phần hiện thị người dùng:
24
2.1 Layouts
Layout xác định cách bố trí hình ảnh cho một giao diện người dùng trên screen,
Chẳng hạn như giao diện cho một activity hoặc app widget. Chúng ta có thể khai báo
layout theo 2 cách:
Khai báo thành phần giao diện người dùng trong XML.
Khai báo layout trong thời gian chạy ứng dụng.
Trong Android chúng ta có thể sự dụng linh hoạt một hoặc cả hai cả hai phương pháp
để khai báo bố trí và quản lí các thành phần lauout. Ví dụ, chúng ta có thể khai báo các
thành phần giao diện mặc định của ứng dụng trong XML, bao gồm các thành phần màn
hình sẽ xuất hiện trong nó và thuộc tính của nó. Sau đó chúng ta có thể thêm mã trong
ứng dụng của mình có thể sẽ thay đổi trạng thái của các đối tượng màn hình, bao gồm
cả những khai báo trong XML trong khi ứng dụng đang chạy.
Một điều nữa là bản thân layout chỉ là một thành phần giao diện hiện thị, tự nó không
thể load lên sceen cũng như không thể tiếp nhận các tương tác với người dùng nên để
nó có thể hoạt động thì bắt buộc phải có một file Activity.Java điều khiển nó. Thông
thường một file layout.xml thường sẽ đi kèm với một file Activity.java để điều khiển
nó. Ví dụ: chúng ta tạo một
main_layout.xml
với nội dung giống như trong ví dụ
trên. Để lauout đó xuất hiện trên screen thi trong file
Activity.java
ta phải gọi
setContentView(R.layout. main_layout.xml)
để load layout lên screen.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
}
Layout cũng có nhiều loại như:
LinearLayout
,
TableLayout
,
FrameLayout
,
RelativeLayout, AbsoluteLayout. Trong một ứng dụng ta thường phải kết hợp
các loại layout nay lại với nhau.
25
2.1.1 FrameLayout
Là loại Layout cơ bản nhất, đặc điểm của nó là khi gắn các control lên giao diện
thì các control này sẽ luôn được “Neo” ở góc trái trên cùng màn hình, nó không
cho phép chúng ta thay đổi vị trí của các control theo một Location nào đó. Các
control đưa vào sau nó sẽ đè lên trên và che khuất control trước đó (trừ khi ta thiết
lập transparent cho control sau).
Ví dụ: chúng ta có đoạn xml sau.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
gt=""
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5px"
android:src="@drawable/blue" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5px"
android:src="@drawable/red" />
</FrameLayout>
Ta thấy, hình màu đỏ và màu xanh luôn được
“neo” ở góc trái màn hình. Hình màu đỏ đưa vào
sau sẽ đè lên trên hình màu xanh.