Qua đồ án tốt nghiệp “Xây dựng ứng dụng máy tính khoa học cho điện thoại cầm tay thông minh chạy hệ điều hành android” lần này. Lời đầu tiên cho em xin gửi lời cảm ơn tới các thầy cô giảng viên của Trường Đại Học Công Nghệ Thông tin và truyền thông đã tạo điều kiện và thời gian cho em hoàn thành đồ án tốt nghiệp này. Đặc biệt cho em xin gửi lời cảm ơn chân thành đến thầy giáo Th. s Quách Xuân Trưởng người đã dìu dắt và hướng dẫn em để em hoàn thành bài báo cáo đồ án tốt nghiệp trong thời gian qua. Trong đề tài trình bày có thể còn nhiều vấn đề chưa được tốt mong các thầy cô tận tình chỉ bảo để em có những kinh nghiệm giúp ích cho công việc sau này. Thái nguyên, ngày tháng 06 năm 2012 Sinh viên Hoàng Thị Thu Hương
1
2
LỜI CAM ĐOAN Em xin cam đoan toàn bộ đồ án: “Xây dựng ứng dụng máy tính khoa học cho điện thoại thông minh hệ điều hành Android”. là do bản thân tìm hiểu, tham khảo, nghiên cứu. Không có sự sao chép nội dung từ các đồ án khác. Tất cả nội dung hoặc hình ảnh minh họa đều có nguồn gốc xuất xứ rõ ràng từ các tài liệu tham khảo ở nhiều nguồn khác nhau mà xây dựng nên. Em xin cam đoan những lời trên là đúng, mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước Hội đồng. Thái Nguyên, tháng 6 năm 2012. Sinh viên
Hoàng thị thu Hương
3
MỤC LỤC
4
LỜI NÓI ĐẦU
Trong thời điểm hiện nay, trên thế giới cũng như tại Việt Nam thị trường dành cho điện thoại di động đang trở nên sôi động hơn bao giờ hết. Do thu nhập của người dân càng ngày càng được cải thiện cũng như cầu trao đổi thông tin càng ngày càng ra tăng. Và theo điều tra của các nhà nghiên cứu thì chiếc điện thoại gần như là một vật dụng không thể thiếu và là vật dụng được sử dụng nhiều nhất đối với mỗi người sở hữu nó. Cùng với sự phát triển đó thì các ứng dụng trên điện thoại ngày càng phát triển mạnh mẽ do đó xu hướng phát triển việc lập trình trên điện thoại di động là điều tất yếu. Với những tính năng đặc biệt và tiện dụng thì hiện giờ Android đang trở thành một hệ điều hành được rất nhiều người ưa chuộng. Và theo dự đoán của các nhà Nghiên cứu thì năm 2012 hệ điều hành Android thực sự trở thành vua trong hệ điều hành của thế giới di động. Nắm bắt được xu thế phát triển của lập trình ứng dụng trên điện thoại cho nên trong thời gian làm đồ án tốt nghiệp lần này em quyết định chọn đề tài: “Xây dựng máy tính khoa học cho điện thoại thông minh hệ điều hành Android” Nội dung của bài báo cáo tốt nghiệp gồm có 3 phần: Chương 1: Hệ điều hành Android Chương 2: Phân tích chương trình máy tính số học Chương 3:Thiết kế và xây dựng ứng dụng
5
CHƯƠNG 1: SƠ LƯỢC VỀ HỆ ĐIỀU HÀNH ANDROID
1.1 Lịch sử hình thành Android: Ban đầu, 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 Lịch sử Android Cuối năm 2007,
thuộc về OHA( Open Handset Alliance) Liên minh
theieets bị cầm tay mã nguồn mở gồm các thành viên nổi bật trong ngành viễn thôgn và thiết bị cầm tay như: Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,… Mục tiêu của liên minh này là tạo ra một sản phẩm điện thoại tốt hơn và do đó Android ra đời. Thiết bị cầm tay có khả năng Android đầu tiên trên thị 6
trường là thiết bị G1 do HTC sản xuất và được bán trên T-Mobile. Một vài ngày sau đó Google công bố sự ra mắt của phiên bản Android SDK release Candidate 1.0.
1.2 Kiến trúc của Android
Hình 1-2 Kiến trúc Android
1.2.1 Tầng ứng dụng (Application): Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản : Browse, camera, Phone,….Tất cả các ứng dụng này đều được viết bằng Java
1.2.2. Application Framework Là 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, có thể tự do tận dụng thiết bị của phần cứng thông tin địa điểm truy cập, các dịch vụ chạy nền….. 1.2.3. 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ố thư viện cơ bản:
7
•
Hệ thống thư viện C : triển khai BSD-derived có nguồn gốc từ các hệ thống thư viện chuẩn C (libc), chỉnh để nhúng vào các thiết bị dựa trên
Linux. • Media Libraries – Dựa trên gói Video OpenCORE; các thư viện hỗ trợ
phát và ghi âm của các định dạng âm thanh và video phổ biến, cũng như các file hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG • Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị • LibWebCore - một trình duyệt web hiện đại có quyền hạn trong cả trình duyệt Android và hiển thị nhúng web. • SGL – Các cơ sở công cụ đồ họa 2D. • 3D libraries - Thực hiện dựa trên OpenGL ES 1.0 APIs; Thư viện sử dụng hoặc là tăng tốc phần cứng 3D (nếu có) hoặc bao gồm tối ưu hóa phần mềm 3D. • FreeType - bitmap and vector font rendering. • SQLite - a powerful and lightweight relational database engine available to all applications. 1.2.4. Android Runtime Tại cùng một tầng như các thư viện, android runtime cung cấp một bộ lõi thư viện cho phép các nhà phát triển viết các ứng dụng android bằng cách sử dụng ngôn ngữ lập trình java. Android runtime cũng bao gồm các máy ảo Dalvik, cho phép mọi ứng dụng android chạy trong tiến trình riêng của mình. Dalvik là một máy ảo chuyên dụng được thiết kế đặc biệt cho android và tối ưu hóa cho các thiết bị điện thoại di động với giới hạn bộ nhớ và CPU 1.2.5. Linux Kernel: Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như security, memory management, process management, network stack, and driver model. Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần mềm stack.
8
1.2. Công cụ và cài đặt:
Bước 1: Download và giải nén Eclipse Galileo tại : Chúng ta nên sử dụng Eclipse gói Galileo để lát nữa đỡ phải cầu hình lại Eclipse. Bước 2: Cài đặt ADT -
Mở Help -> Install new software ->Add Ở mục Name: ADT plugin hoặc bạn có thể nhập tên khác cũng được Location: Nhập vào link: />OK-> Next cho đến khi cài đặt hoàn thành
Bước 3: Cài đặt Android SDK - Tải Android SDK tại và giải
nén - Mở Eclipse -> Window -> Preferences -> Android -> trong mục SDK location chọn Browse > đưa đường dẫn đến thư mục SDK vừa giải nén> bấm Apply-> Install Bước 4: Tạo một máy điện thoại ảo (AVD) - Vào Window-> Android SDK and AVD manager -> Virtual devices-
> New - Điền vào các mục Name, Target: chọn API level cho phù hợp ứng dụng bạn chọn, SDcard chọn Size dùng, nếu không thì để trống cũng được.
9
1.4. Cấu trúc một Project Android:
Hình 1-3: Cấu trúc 1 project Android 1.4.1. AndroidManifest.xml:
Mỗi một project Android khi được tạo ra thì đều tạo ra 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. 1.4.2. Thư mục src Chứa source code ứng dụng. Gồm các package và các class.
10
1.4.3. Thư mục ges Chứa các file tự động phát sinh( Thường gặp nhất là file R.class ) File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh. Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy xa làm thay đổi các thuộc tính trong ứng dụng. Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá. Là file mà ta 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. 1.4.4. Thưc mục res : Chứa file main.xml và các hình ảnh có liên quan để thiết kế giao diện cho màn hình
1.5. Những khái niệm cơ bản trong Lập trình Android: Một ứng dụng Android bao gồm 4 thành phần chính Active, Inactive,
Visitable, Invisible. 1.5.1. Activity: Là một trong bốn thành phần chính của một ứng dụng Android, được dùng để hiển thị màn hình.
11
Lifecycle của Activity:
Hình 1-4. Vòng đời của activity Một ứng dụng có thể gồm chỉ một activity hay nhiều activity. Thông thường, một trong số các activity được đánh dấu như là activity đầu tiên phải được trình diễn tới người dùng khi ứng dụng được khởi động. Chuyển từ một activity sang activity khác được hoàn thành bằng cách cho activity hiện thời khởi động activity kế tiếp. Class cơ sở Activity định nghĩa một loạt các sự kiện mà điều chỉnh vòng đời của một hoạt động. Class Activity định nghĩa các sự kiện: onCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên onStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng onResume(): Được gọi khi hoạt động bắt đầu tương tác với người sử
dụng
12
onPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt
động trước đó
onStop(): Được gọi khi hoạt động không còn hiển thị với người dùng onDestroy(): Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng
tay hoặc bằng hệ thống để bảo tồn bộ nhớ onRestart(): Được gọi khi hệ thống đã được dừng lại và khởi động lại
một lần nữa 1.5.2.Service: Một service không có giao diện trực quan, nó chạy trên nền trong một khoảng thời gian không xác định. Ví dụ một service có thể chơi nhạc nền, hay nó nạp dữ liệu trên mạng hay tính toán cái gì đó và cung cấp kết quả cho activity cần đến nó. Mỗi service mở rộng từ lớp cơ sở Service Một ví dụ cổ điển là media player chơi các bài hát từ một danh sách. Ứng dụng player có thể có một hay hai activity cho phép người dùng chọn bài hát và bắt đầu chơi. Tuy nhiên, music playback không tự nó được xử lý bởi một activity bởi vì người dùng sẽ mong muốn chơi tiếp nhạc khi họ rời khỏi player và làm cái gì đó khác. Để tiếp tục chơi nhạc, media player activity có thể khởi động một service chạy trên nền. Hệ thống sẽ giữ cho music playback service chạy thậm chí khi activity khởi động nó rời khỏi màn hình. Trong khi kết nối, bạn có thể giao tiếp với dịch vụ thông qua giao diện mà service đó trưng ra. Ví dụ như trong music service, giao diện này có thể cho phép người dùng pause, stop và restart lại playback. Giống như các activity và các thành phần khác khác, service chạy trong thread chính của tiến trình ứng dụng. Vì thế chúng không thể chặn những thành phần khác hay giao diện người dùng, chúng thường tạo ra các thread khác cho các nhiệm vụ hao tốn thời gian.
13
Hình 1-5. Chu trình sống service 1.5.3. Broadcast Receive: Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc nhận và đáp lại các thông báo broadcast. Nhiều broadcast khởi đầu trong mã hệ thống ví dụ như thông báo múi giờ thay đổi, pin yếu, ảnh đã được chụp, hay người dùng đã thay đổi ngôn ngữ … Các ứng dụng có thể tạo ra các broadcast, chẳng hạn để ứng dụng khác biết được một số dữ liệu đã được tải về thiết bị và sẵn sàng cho việc sử dụng chúng. Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thông báo nào mà nó cho là quan trọng. Tất cả các receiver mở rộng từ lớp cơ sở BroadcastReceiver. Broadcast Receiver không hiển thị một giao diện người dùng. Tuy nhiên chúng có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận, hay chúng có thể sử dụng NotificationManager để cảnh báo người dùng. Notifications có thể lấy sự chú ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra âm thah, vân vân. Chúng thường lấy một biểu tượng bền vững trong thanh trạng thái, cái mà người dùng có thể mở để lấy thông điệp. 14
1.5.4.Content provider: Một content provider tạo ra một tập cụ thể các dữ liệu của ứng dụng khả dụng cho các ứng dụng khác. Dữ liệu có thể được lưu trữ trong hệ thống file, trong một cơ sở dữ liệu SQLite, hay trong một cách khác nào đó. Content provider mở rộng lớp cơ sở ContentProvider để cài đặt một tập các chuẩn các phương thức cho phép các ứng dụng khác đạt được và lưu trữ dữ liệu của kiểu mà nó điều khiển. Tuy nhiên, các ứng dụng không gọi trực tiếp các phương thức này, chúng sử dụng một đối tượng ContentResolver và gọi các phương thức của nó. Một ContentResolver có thể nói chuyện với bất cứ content provider nào, chúng cộng tác với provider để quản lý giao tiếp liên tiến trình. 1.5.5.Manifest File:
Trước khi Android có thể khởi động một thành phần ứng dụng, nó phải biết rằng thành phần đó tồn tại. Vì vậy, ứng dụng khai báo những thành phần của mình trong một manifest file được gắn vào Android package, file .apk này cũng giữ chứa mã của ứng dụng và các tài nguyên. Manifest file là một file XML có cấu trúc và thường được đặt tên là AndroidManifest.xml cho mọi ứng dụng. Nó thực hiện một số bổ sung để khai báo các thành phần của ứng dụng, như là nêu tên các thư viện ứng dụng cần đến, và xác định các quyền hạn của ứng dụng muốn được cấp. Ví dụ như nó khai báo các Activity trong chương trình của chúng ta, khi khởi động chương trình thì Activity nào sẽ được thực hiện đầu tiên, các quyền truy cập Internet, SDCard, hay các vấn đề về gửi nhận tin nhắn, cuộc gọi... 1.5.6. Giao diện người dùng trong Android: Trong một ứng dụng Android, giao diện người dùng được xây dựng bằng cách sử dụng View và ViewGroup đối tượng. Có nhiều loại quan điểm và các nhóm view, mỗi một trong số đó là hậu duệ của lớp View. View objects là các đơn vị cơ bản của biểu hiện giao diện người dùng trên nền tảng Android. Các class xem như là cơ sở phục vụ cho class con được gọi là "widget", trong đó cung cấp đầy đủ các đối tượng thực hiện giao diện, giống như các lĩnh vực văn bản và nút. Class ViewGroup phục vụ như là cơ sở cho lớp con được gọi là "
15
layouts", cung cấp các loại khác nhau của kiến trúc bố trí, như linear, tabular và relative. -Một View object là một cấu trúc dữ liệu có đặc tính lưu trữ các thông số bố trí và nội dung cho một khu vực cụ thể hình chữ nhật của màn hình. -Một View object xử lý đo lường riêng của mình, bố trí, bản vẽ thay đổi tập trung,, di chuyển, và phím/tương tác cử chỉ cho khu vực hình chữ nhật của màn hình.
Là một object trong giao diện người dùng, view cũng là một điểm tương tác cho người sử dụng và nhận các sự kiện tương tác. a. View 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 1-6 Cấu trúc một giao diện ứng dụng Android
16
b. 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. 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 1-7 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.
17
Hình 1-8 Bố trí các widget trong FrameLayout •
AbsoluteLayout
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. Khi chuyển ứng dụng sang một màn hình có kích thước với màn hình thiết kế ban đầu thì vị trí của các đối tượng sẽ không còn được chính xác như ban đầu. •
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ý.
18
Hình 1-9. 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.
19
Hình 1-10. Bố trí widget trong TableLayout 1.5.7.Các thành phần giao diện và Widget: - Có rất nhiều cách mà bạn có thể xem cách bố trí của bạn. Sử dụng nhiều hơn và các loại khác nhau của các view group, bạn có thể cấu trúc views con và view groups trong vô số cách . Xác định các nhóm xem được cung cấp bởi Android (gọi là layouts) bao gồm LinearLayout, RelativeLayout, TableLayout, GridLayout và khác. Mỗi cung cấp một bộ duy nhất của các thông số bố trí được
sử dụng để xác định vị trí của views con và cơ cấu layout Để tìm hiểu về một số các loại khác nhau của các view group được sử dụng cho một layout, đọc Giao diện đối tượng thường gặp. - Widget là một object View phục vụ như một giao diện để tương tác với người dùng. Android cung cấp một tập các widgets thực hiện đầy đủ, giống như các button, Checkbox, và text-entry , do đó bạn có thể nhanh chóng xây dựng giao diện người dùng của bạn. Một số widgets được cung cấp bởi Android phức tạp hơn, giống như một date picker, clock, và zoom controls. Nhưng nó không giới hạn trong các loại widgets được cung cấp bởi các nền tảng Android. -Nếu bạn muốn làm một cái gì thêm cho tùy biến và tạo ra các yếu tố của hành động của bạn, bạn có thể, bằng cách xác định object view của riêng bạn hoặc bằng cách mở rộng và kết hợp các Widget hiện có. Một số widget: 20
c. 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: •
Thiết kế bằng XML android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cmdButton1" android:text="Touch me!" android:onClick="touchMe"/>
Thuộc tính android:onClick="touchMe" được dùng để nắm bắt sự kiện click vào button. Khi sự kiện click button xảy ra thì phương thức “touchMe” được khai báo trong thẻ thuộc tính sẽ được gọi. Nếu trường hợp phương thức “touchMe” chưa được khai báo trong file mã nguồn tương ứng thì sẽ phát sinh một exception. Ngược lại, phương thức “touchMe” sẽ nhận được một đối tham biến là đối tượng View nơi đã phát sinh ra sự kiện. Đối tượng View này có thể ép kiểu trực tiếp sang kiểu Button vì thực chất nó là một button, trong file mã nguồn ta có thể khai báo một hàm như sau: public void touchMe(View v){ Button me = (Button) v; Me.setText(“Touched”); } d. 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"
Hình 1-13 ImageButon e. 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:
ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.icon);
Hình 1-11 .ImageView và ImageButton
22
f. 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. Chẳng hạn, trong Data Source có một trường name và trong ListView cũng có một TextView để thể hiện trường name này. Tuy nhiên, ListView sẽ không thể hiển thị dữ liệu trong Data Source lên được nếu như Adapter không gán dữ liệu vào cho đối tượng hiển thị.
•
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 đó.
Hình 1-12 Minh hoạ cho một ListView g. 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. 23
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. h. EditText Trong Android đối tượng EditText được sử dụng như một TextField hoặc một TextBox. android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" 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 đó. android:singleLine = “true” EditText của bạn sẽ trở thành một TextField, ngược lại sẽ là TextBox. i. CheckBox Nhận 2 giá trị true hoặc false. Đối tượng CheckBox cho phép chọn nhiều item cùng một lúc. Khai báo: CheckBox cb = new CheckBox(Context …); XML: 24
android:id="@+id/CheckBox01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Check me" android:checked="true"/ l. Quick Search Box Một trong những tính năng mới trong phiên bản Android 1.6 đó là Quick Search Box. Đây là khuôn khổ tìm kiếm mới trên toàn hệ thống Android, điều này làm cho người dùng có thể nhanh chóng tìm kiếm bất cứ thứ gì có trên chiếc điện thoại Android của họ và cả các tài nguyên trên web khi họ đang online. Nó tìm kiếm và hiển thị kết quả tìm kiếm ngay khi bạn đang gõ. Nó cũng cung cấp các kết quả từ các gợi ý tìm kiếm web, danh sách doanh nghiệp địa phương, và thông tin khác từ Google, chẳng hạn như báo giá cổ phiếu, thời tiết, và tình trạng chuyến bay. Tất cả điều này có sẵn ngay từ màn hình chủ, bằng cách khai thác trên Quick Search Box (QSB).