LỜI CẢM ƠN Để hoàn thành bài đồ án tốt nghiệp này, lời đầu tiên em xin gửi lời biết ơn chân thành và sâu sắc nhất đến thầy giáo Th.S Nguyễn Văn Việt đã tận tình hướng dẫn, truyền đạt những kinh nghiệm quý báu cho em trong suốt quá trình làm đồ án. Em xin gửi lời cảm ơn đến các thầy cô giáo trong khoa Công nghệ thông tin cùng toàn thể các thầy cô giáo đã truyền đạt vốn kiến thức quý báu cho em trong suốt quá trình học tâp vừa qua. Em đã được các thầy cô cung cấp và truyền đạt tất cả kiến thức chuyên môn cần thiết và quý giá nhất. Ngoài ra, em còn được rèn luyện một tinh thần học tập và làm việc độc lập, sáng tạo. Đây là nền tảng hết sức cần thiết để có thể thành công khi bắt tay vào nghề nghiệp trong tương lai. Đồ án tốt nghiệp là cơ hội để em có thể áp dụng, tổng kết lại những kiến thức mà mình được học. Đồng thời, em rút ra được những kinh nghiệm thực tế và quý giá trong suốt quá trình thực hiện đồ án. Sau một thời gian khá dài, em tập trung công sức cho đồ án và làm việc tích cực, đặc biệt nhờ sự chỉ đạo và hướng dẫn tận tình của thầy Th.S Nguyễn Văn Việt cùng với các thầy cô trong trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên, đã giúp em hoàn thành đồ án một cách thuận lợi và gặt hái được những kết quả như mong muốn. Bên cạnh những kết quả khiêm tốn mà em đạt được, chắc chắn không tránh khỏi những thiếu sót khi thực hiện báo cáo của mình, kính mong thầy cô thông cảm. Sự phê bình, góp ý của quý thầy cô sẽ là nhưng bài học kinh nhiệm quý báu cho công việ thực tế của em sau này. Em cũng xin chân thành cảm ơn Ban lãnh đạo nhà trường cùng toàn thể các thầy cô giáo trong nhà trường đã tạo mọi điều kiện thuận lợi, cung cấp cơ sở vật chất, trang thiết bị cần thiết trong quá trình học tập của em tại trường. Kính chúc quý thầy cô mạnh khỏe, tiếp tục đạt được nhiều thắng lợi trong nghiên cứu khoa học và sự nghiệp trồng người. Em xin chân thành cảm ơn!
1
LỜI CAM ĐOAN Em xin cam đoan toàn bộ nội dung trong đồ án này là do tự em đọc và nghiên cứu các tài liệu, khảo sát các phần mềm hiện nay . Từ đó viết ra cơ sở lý thuyết và xây dựng chương trình “phần mềm học tiếng Anh tỏng hợp trên Android”. Mọi nguồn tham khảo, trích dẫn trong đồ án đều được ghi rõ nguồn gốc. Người cam đoan
Nguyễn Văn Phú
2
MỤC LỤC LỜI CẢM ƠN ..........................................................................................................1 LỜI CAM ĐOAN ....................................................................................................2 MỤC LỤC................................................................................................................3 DANH MỤC HÌNH ẢNH .......................................................................................6 MỞ ĐẦU:.................................................................................................................7 CHƯƠNG 1: LÝ THUYẾT ANDROID..................................................................8 I.
GIỚI THIỆU ANDROID...............................................................................8 1.1.
Tùy biến control (Custom Control) ................................................21
III.
LẬP TRÌNH TRÊN ANDROID ..............................................................22
3.1.
Giới thiệt Intents....................................................................................22
3.1.1.
Thành phần Intent...........................................................................22
3.1.2.
Sử dụng Intent khởi động cho Activities........................................23
3.1.3.
Intent không tường minh thực thi Activity.....................................23
3.1.4.
Intent tường minh thực thi Activity...............................................24
3.1.5.
Sử dụng Intent để truyền thông tin ra ngoài Activity.....................24
3.2.
Giới thiệu Adapter.................................................................................24
3.2.1.
Một số Adapter...............................................................................25
3.2.2.
Sử dụng Adapter hiển thị dữ liệu ...................................................25
3.3.
Kỹ thuật lưu trữ dư liệu trong android ..................................................25
3.4.
Lưu trữ dữ liệu ứng dụng một cách đơn giản........................................26
3.4.1.
Tạo và lưu dữ liệu với Shared Preferences ....................................26 4
3.4.2. 3.5.
Truy xuất Shared Preferences.........................................................27
Cơ sở dữ liệu trong android ..................................................................27
3.5.1.
Giới thiệu SQLite ...........................................................................27
3.5.2.
Cursors và ContentValues ..............................................................27
3.5.3.
Sử dụng SQLiteOpenHelper ..........................................................28
3.5.4.
Truy xuất và tạo cơ sở dữ liệu không dung SQLiteHelper.............28
3.5.5.
Truy vấn cơ sở dữ liệu....................................................................29
3.5.6.
Lấy kết quả từ Cursors ...................................................................29
3.5.7.
Thêm, cập nhật và xóa dòng...........................................................30
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG............................................31 DEMO CHƯƠNG TRÌNH ....................................................................................31 I.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG ........................................................31 1.1.
Thực trạng..........................................................................................31
1.2.
Mục tiêu của đề tài.............................................................................31
1.3.
Đối tượng ...........................................................................................31
1.4
Ý nghĩa của phần mềm ......................................................................31
1.5
Yêu cầu chức năng.............................................................................32
1.6
Yêu cầu phi chức năng.......................................................................33
3.1 Giao diện chính của phần mềm .................................................................51 3.2 Giao diện chức năng luyện nghe ...............................................................53 3.3
Giao diện chức năng luyện nói..............................................................55
3.4 Giao diện chức năng luyện đọc .................................................................56 3.5 Chức năng luyện viết.................................................................................57 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .............................................................58 5
TÀI LIỆU THAM KHẢO:.....................................................................................59 NHẬN XÉT CỦA GIÁO VIÊN ............................................................................60
6
DANH MỤC HÌNH ẢNH Hình 1.1. Kiến trúc Android
12
Hình 2.1. UseCase tổng quan
34
Hình 2.2. UseCase tra cứu từ vựng Hình 2.3. UseCase luyện nghe
36
Hình 2.4. UseCase luyện nói
37
Hình 2.5. UseCase luyện đọc
38
Hình 2.6. UseCase luyện viết
39
35
Hình 2.7. UseCase học ngữ pháp 40 Hình 2.8. UseCase kiểm tra – tests41 Hình 2.9. UseCase phương pháp học
42
Hình 2.10. Biểu đồ trình tự chức năng luyện nghe
43
Hình 2.11. Biểu đồ trình tự chức năng luyện nói 44 Hình 2.12. Biểu đồ trình tự chức năng luyện đọc45 Hình 2.13. Biểu đồ trình tự chức năng luyện viết46 Hình 2.14. Biểu đồ trình tự học ngữ pháp 47 Hình 2.15. Biểu đồ tuần tự kiểm tra - test 48 Hình 2.16. Biểu đồ trình tự tra cứu từ vựng
49
Hình 2.17. Biểu đồ trình tự phương pháp học
50
Hình 2.18. Giao diện mở đầu của phần mềm.
51
Hình 2.19. Giao diện tùy chọn chính.
52
Hình 2.20. Danh sách các bài nghe
53
Hình 2.21. Màn hình nghe đoạn hội thoại 54 Hình 2.22. Giao diện chức năng luyện nói Hình 2.23. Chức năng đọc sách
55
56
Hình 2.24. Màn hình đang đọc chuyện "The sleeping beauty" 57 Hình 2.25. Chức năng viết 57 7
8
MỞ ĐẦU: Với hơn 1,5 tỉ người dùng, tiếng Anh là ngôn ngữ phổ biến nhất thế giới. Tiếng Anh được coi là ngôn ngữ chung quốc tế.Tất cả các nước phát triển đều sử dụng tiếng Anh. Như vậy, tiếng Anh có thể coi là cầu nối để hội nhập với thế giới tốt hơn. Với ý nghĩa lớn như vậy, em đã mạnh dạn làm đồ án với đề tài “xây dựng phần mềm học tiếng Anh tổng hợp trên hệ điều hành Android” để người Việt mình có thêm một công cụ học tiếng Anh tiện lợi, hiệu quả. Trên cửa hàng Google Play đã có khá nhiều phần mềm học tiếng Anh cho thiết bị chạy Android như “tflat” nhưng chỉ tập trung vào từng khía cạnh riêng lẻ của tiếng Anh. Do đó, em mạnh dạn làm đề tài xây dựng phần mềm học tiếng Anh tổng hợp cho thiết bị chạy Android. Phần mềm tổng hợp 4 kỹ năng chính trong việc học tiếng Anh cũng giống như các ngôn ngữ khác đó là: nghe, nói, đọc, viết, và một số chức năng khác….Hy vọng phần mềm sẽ giúp ích cho người Việt học tốt tiếng Anh. Mặc dù đã cố gắng hết sức, tập trung tâm huyết làm đồ án này, em nghĩ rằng vẫn không tránh khỏi thiếu sót. Em rất mong nhận được phản hồi, đóng góp quý báu từ thầy cô, bạn bè, và người dùng để phần mềm ngày càng hoàn thiện hơn. Em xin chân thành cảm ơn các thầy cô khoa Công nghệ thông tin đã tạo mọi điều kiện để em hoàn thành đề tài này. Em xin cảm ơn chân thành giảng viên Th.S Nguyễn Văn Việt trực tiếp nhiệt tình hướng dẫn em làm đề tài này. Lời cuối, em xin chúc thầy cô và các bạn sức khỏe, công tác tốt.
Thái Nguyên, tháng 5 năm 2016 Sinh viên Nguyễn Văn Phú
9
10
CHƯƠNG 1: LÝ THUYẾT ANDROID
GIỚI THIỆU ANDROID Khái niệm android Trước hết Android là nền tảng phần mềm dựa trên mã nguồn mở Linux OS (Kernel 2.6) cho máy di động và những phần mềm trung gian (middleware) để hổ trợ các ứng dụng mà người sử dụng cần đến. Một cách định nghĩa không quá chuyên môn thì có thể coi Android là tên một nền tảng mở cho thiết bị di động của Google (gồm hệ điều hành, middleware và một số ứng dụng cơ bản). Android sẽ đương đầu với một số hệ điều hành (viết tắt là HDH) dành cho thiết bị di dộng khác đang hâm nóng thị trường như Windows Mobile, Symbian và dĩ nhiên là cả OS X (iPhone). Có thể nói một cách nôm na rằng Android là một HDH chạy trên thiết bị di động, cũng giống như Windows, Linux hay Mac chạy trên máy vi tính vậy. Android khác với các hệ điều hành chạy trên thiết bị di động khác Android đã thu hút sự chú ý của giới công nghệ toàn cầu khi đứa con của Google sử dụng giấy phép mã nguồn mở. Đó là sản phẩm kết tinh từ ý tưởng của khối Liên minh thiết bị cầm tay do Google dẫn đầu, gồm 34 thành viên là các công ty hàng đầu về công nghệ và di động toàn cầu như Qualcomm, Intel, Motorola, Texas Instrucments, LG Electronics, các nhà mạng như T-Mobile, Sprint Nextel, NTT Comodo, và China Mobile. Các nhà phát triển có thể sử dụng miễn phí bộ Kit Android Software Developement để xây dựng các ứng dụng của mình. Đặc tính mở của 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ả các tính năng của một chiếc điện thoại cung cấp.
11
Nó được xay dựng để thực sự mở. Ví dụ, một ứng dụng có thể 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 sử dụng bằng máy ảnh, giúp nhà phát triển tạo ra các ứng dụng phong phú cho người dử dụng. Android được xây dựng trên mã nguồn mở Linux Kernel. Hơn nữa, nó sử dụng máy ảo tùy chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng của thiết bị di động. Android không phân biệt giữa các ứng dụng lõi và các ứng dụng của bên thứ 3. Tất cả có thể được xây dựng để có thể truy cập bằng khả năng của một thiết bị di động cung cấp cho người sử dụng với một dải rộng các ứng dụng và dịch vụ. Với các thiết bị xây dựng trên android, người dụng hoàn toàn có thể thích ứng với điện thoại đến lợi ích của họ. Với android, một nhà phát triển có thể xây dựng một ứng dụng cho phép người dùng xem vị trí của bạn bè của họ và thông báo khi họ đang có trong vùng phụ cận cho phép kết nối. Android cung cấp truy cấp đến một loạt các thư viện công cụ hữu ích và có thể được sử dụng để xây dựng các ứng dụng phong phú. Ví dụ, android cho phép các thiết bị giao tiếp với nhau tạo điều kiện cho đồng đẳng rich-to-peer trong ứng dụng xã hội. Ngoài ra, android bao gồm một tập đầy đủ các công cụ đã được xây dựng công phu, với việc cung cấp nền tảng phát triển, với năng suất và cái nhìn sâu vào ứng dụng. Kiến trúc android. “Understanding Android” là cách mà ta tiếp cận lập trình Android và thấu hiểu kiến trúc hệ thống của nó. Chúng ta có thể không cần hiểu rõ cấu trúc của một hệ điều hành nhưng chúng ta vẫn có thể lập trình trên hệ điều hành đó, đây là điều mà nhà sản xuất muốn khi release SDK với một framework có sẵn của họ. Như chúng ta đã biết điều này cũng có mặt tốt mặt xấu. Framework là một nền tảng cao cấp dành cho lập trình viên, nó đều có giới hạn của nó, chúng ta có thể chỉ lập trình ứng dụng phổ biến, không nên tiến tới những ứng dụng cao cấp đi xâu vào hệ
thống của hệ điều hành. 12
Android Flatform. Bao gồm hệ điều hành Android với dày đủ tính năng, các ứng dụng và các tầng trung gian để developer có thể mở rộng, tùy chỉnh hoặc thêm vào các component của họ. Có 4 tầng cơ bản trong hệ điều hành android: Application Framework, Android Runtime, Native Libraries, Linux Kernel. Mỗi tầng làm việc đều nhờ sự giúp đỡ của tầng bên dưới. Tầng Linux Kernel. Đây là nhân của hệ điều hành Android, mọi xử lý của hệ thống đều phải thông qua tầng này. Linux Kernel cung cấp các trình điều khiển thiết bị phần cứng (driver)
như:
camera,
USB,
Wifi,
Bluetooth,
Display.
Power
Management....Android dựa trên phiên bản Linux 2.6 lựa chọn các tính năng cốt lõi như bảo mật, quản lý bộ nhớ, quản lý tiến trình, mạng stack, và các trình điều khiển phần cứng. Kernel hoạt động như một lớp trừu tượng giữa phần cứng và phần mềm của hệ thống. Native Labraries. System C library – có nguồn gốc từ thư viện chuẩn C (libc), điều khiển các thiết bị nhúng trên Linux. Media Library – mở rộng từ PacketVideo’sOpenCORE: thư viện hỗ trợ playback và recording của nhiều định dạng video và image phổ biến: MPEG4, H.264, MP3, AAC, ARM, JPG, NPG. Surface Manager: quản lý việc hiển thị và kết hợp đồ họa 2D và 3D. LibWebCore: Android dùng lại webkit engine cho việc render trình duyệt mặc định của HĐH android browser và cho dạng web nhúng (như HTML nhúng). SGL – 2D engine. 3D libraries – thư viện 3D dựa trên OpenGL ES 1.0 API, có nâng cấp tăng tốc “hardware 3D acceleration”. 13
FreeType – render bitmap và vector font. SQLite – quản lý database và ứng dụng. Tầng Runtime. Mỗi ứng dụng Android chạy trên một proccess riêng của Dalvik VM (máy ảo). Dalvik được viết để chạy nhiều máy ảo cùng lúc một cách hiệu quả trên cùng một thiết bị. Máy ảo Dalvik thực thi các file mang định dạng .dex (Dalvik Excutable), định dạng này là định dạng đã được tối ưu hóa chỉ để chiếm một vùng nhớ vừa đủ và nhỏ nhất có thể. VM chạy các class (đã được compile trước đó bởi một trình biên dịch ngôn ngữ java), sở dĩ VM chạy được các class nhớ này nhờ chương trình DX tool đã convert các định dạng .dex.
Tầng Application Framework Đây là tầng mà 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 hàm API có sẵn mà Google đã viết để sử dụng các tính năng của phần cứng mà không cần hiểu cấu trúc các tầng phía dưới. Bằng cách cung cấp một nền phát triển mở. Android 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 chỉ truy cập, các dịch vụ chạy nền, thiết bị hệ thống báo thức, thêm thông báo cho các thanh trạng thái, và nhiều hơn nữa. Tất cả các ứng dụng thường gồm một số các dịch vụ và hệ thống cơ bản sau: View UI dùng để xây dựng các layout của ứng dụng bao gồm: list view, text field, button, dialog, form.... Content Providers cho phép các ứng dụng có thể truy cập dữ liệu từ các ứng dụng khác, hoặc để chia sẻ dữ liệu của riêng ứng dụng. 14
Resources Manager: cung cấp cách thức truy cập đến non-code resource như các asset, graphic, 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.
Hình 1.1. Kiến trúc Android
15
16
MÔI TRƯỜNG LẬP TRÌNH. Các công cụ cần thiết để lập trình trên android và hướng dẫn cài đặt. Các công cụ cần thiết để lập trình. Hệ điều hành: window 7, 8, 8.1 và 10, Ubuntu. Công cụ lập trình: JDK và Android Studio. Chúng ta có 2 bước chính: Cài đặt JDK và Adroid Studio. Bước 1: Vào địa chỉ để download JDK. Download xong tiến hành cài đặt. Bước 2: Vào địa chỉ
để download Android Studio và tiến hành cài đặt. Chu kỳ sống của ứ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 xây dựng, khởi chạy 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. 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. 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 cho đến thời điểm kết thúc, đôi lúc chúng ta có thể actice (visible
17
hoặc invisible) hoặc inactive. 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ẽ ở 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ế tiếp của stack sẽ di chuyển lên trên và trở thành active.
Các trạng thái của chu kỳ sống.
18
Một Activity chủ yếu có 4 thành phần chính: Active hoặc running: Khi Active 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
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 đó. 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 kỳ sống riêng. Ứ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 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 còn có các thành phần khác có khả năng tương tác với người dùng như Service, Broadcast receier. Có nghĩa là những thành phần không tương tác với người dùng có thể chạy background dưới sự giám sát của HDH cho đến khi người dùng tự tắt chúng. 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ỏ qua thông tin của nó từ vùng nhớ bởi việc gọi hàm finish() của nó, hoặc đơn giản là kill 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 khai báo việc chuyển của nó bằng việc gọi hàm transition.
Tất cả các phương thức là những móc nối mà chúng ta có thể override để 20
làm tương thích 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 thực hiện 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. 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 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(), 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 khảng thời gian này người dùng có thể lấy activity hiển thị 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. Các hàm thực thi. OnCreate(...): hàm này được gọi khi lớp Activity được khởi tạo, dùng để thiết lập giao diện ứng dụng và thực thi những thao tác cơ bản. onStart(): hàm này được gọi khi lớp ứng dụng xuất hiện trên màn hình. onResume(): hàm được gọi ngay sau OnStart hoặc khi người dùng focus ứng dụng, hàm này sẽ đưa ứng dụng lên top màn hình. onPause(): hàm được gọi khi hệ thống đang focus đến 1 activity trước đó. onStop(): hàm được gọi khi một activity khác được khởi động và focus. onRestart(): đưọc gọi khi ứng dụng chuyển sang onStop(), nhưng muốn khởi động lại bằng onStart(). 21
22
Thành phần giao diện trong android View
Trong android giao diện người dùng thường được xây dựng từ các đối tượng View. Trong android flatform, các screen luôn được bố trí theo một kiểu cấu trúc phân cấp như hình trên. 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 gọi một hàm là setContentView(R.layout.main), hàm này sẽ load giao diện từ file main.xml để phân tích thành mã bytecode. ViewGroup ViewGroup là sự mở rộng của class view hay nói cách khác ViewGroup chính là các WidgetLayout được dùng để bố trí các đối tượng khác trong một screen. Có các loại ViewGroup sau: Linear layout: dùng để bố trí các thành phần giao diện theo chiều ngang hay chiều dọc nhưng trên một line duy nhất mà không có xuống dòng. Frame layout: được dùng để bố trí các đối tượng theo kiểu giống như các layout trong Photoshop. Những đối tượng nào thuộc layer bên dưới sẽ bị che khuất bởi các đối tượng khác thuộc layer nằm trên. Frame layout thường được sử dụng muốn tạo các đối tượng có khung hình bền ngoài chẳng hạn như contact image button. Table layout: đượ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 row hoặc column Absolute Layout: được sử dụng để bố trí các widget vào vị trí bất kỳ trong layout dựa vào 2 thuộc tính tọa độ x, y. Tuy nhiên, kiểu layout này rất ít khi được sử dụng bởi tọa độ của các đối tượng luôn luôn cố định và không 23
điều chỉnh được khoảng cách giữa các đối tượng. Khi chuyển đối tượng sang màn hình khác với màn hình thiết kế ban đầu thig vị trí của các đối tượng sẽ không còn được chính xác như ban đầu. Relative layout: 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ối quan hệ 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 weidget hoặc so với layout parrent. Dựa vào những mối ràng buộc đó mà relative layout cũng không phụ thuộc vào kich thước của screen thiết bị. Ngoài ra, nó còn có ưu điểm giúp tiết kiệm các layout sử dụng nhằm mục đích giảm tài nguyên sử dụng khi load đồng thời đẩy nhanh quá trình xử lý. Các control 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. Để thiết kế giao diện với một button ta có 2 cách như sau: Android:layout_width="wrap_content" Android:layout_height="wrap_content " Android:id="@+id/cmdButton1" Android:text="Touch me!" /> Thực ra nếu không phải đòi hỏi phải custom lại một widget thì không cần phải sử dụng tới code. Trong một số trường hợp bắt buộc chúng ta phải custom các widget để cho phù hợp với hoàn cảnh. Chẳng hạn như trong game, các menu hay các nút điều khiển,… ListView. 24
Đượ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 phải có 3 yếu tố chính: Data Source: có thể là một array list, hashmap hoặc bất kỳ một cấu trúc dữ liệu kiểu danh sách nào đó. 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ị trên List View. List View: là đối tượng để thể hiện 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 đó. EditText Trong android, đối tượng Edit Text được xử dụng như một Text Field hoặc một Text Box. Giá trị android:singleLine bằng false, edittext sẽ là một TextBox, ngược lại nó là một TextField.