LỜI CẢM ƠN Trong suốt quá trình học tập ở Trường Viện Đại Học Mở Hà Nội, em đã được tiếp thu và học hỏi rất nhiều kiến thức từ các thầy cô giáo. Đặc biệt là sự tận tình, ân cần chỉ bảo của các thầy cô Khoa Điện Tử Thông Tin đã trang bị cho em những kiến thức quý báu cũng như là hành trang và nền tảng để em vững bước hơn khi vào môi trường làm việc đầy thử thách ngoài xã hội. Em xin gửi lời cảm ơn trân thành và sâu sắc đến các thầy cô trong khoa, cùng thầy giáo Đặng Hải Đăng - người đã tận tình hướng dẫn và đóng góp ý kiến cho em trong suốt thời gian thực hiện đồ án này. Dù đã cố gắng rất nhiều nhưng cũng không tránh khỏi thiếu sót và hạn chế trong quá trình làm đồ án. Em rất mong nhận được sự thông cảm và chỉ bảo cũng như những đóng góp trân thành của các thầy cô và bạn bè để bài đồ án được tốt hơn.
GVHH: TS. Đặng Hải Đăng
1
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
NHẬN XÉT ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. .................................................................................................................
................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. ................................................................................................................. Hà Nội, tháng 5 năm 2017 Giáo viên hướng dẫn
TS. Đặng Hải Đăng GVHH: TS. Đặng Hải Đăng
2
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
LỜI NÓI ĐẦU Thế giới ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thông tin(CNTT) từ một tiềm năng thông tin đã trở thành một tài nguyên thực sự,trở thành sản phẩm hàng hóa trong xã hội tạo ra một sự thay đổi to lớn trong lực lượng sản xuất,cơ sở hạ tầng, cấu trúc kinh tế, tính chất lao động và cả cách thức quản lí trong các lĩnh vực xã hội. Trong những năm gần đây, nền công nghệ thông tin nước ta cũng đã có
phát triển trên mọi lĩnh vực trong cuộc sống cũng như lĩnh vực quản lí xã hội. Một trong những lĩnh vực mà công nghệ thông tin sử dụng phổ biến hiện nay là sản xuất và phát triển phần mềm trên điện thoại di động. Rất nhiều các dòng điện thoại thông minh được phát triển một cách mạnh mẽ. Chúng ta có thể sử dụng điện thoại để lên internet, xem phim, nghe nhạc, chơi game....và rất nhiều việc giải trí khác. Từ lí do này em đã lên ý tưởng và xây dựng một app thông tin trên nền tảng android. Do kiến thức và kinh nghiệm của bản thân còn hạn chế nên đồ án không tránh khỏi những thiếu xót. Rất mong được sự đóng góp của quý thầy cô và các bạn. Cuối cùng xin cảm ơn thầy giáo TS. Đặng Hải Đăng và bạn bè đã giúp em thực hiện đồ án này.
GVHH: TS. Đặng Hải Đăng
3
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
MỤC LỤC LỜI NÓI ĐẦU ............................................................................................................................... 3 CHƢƠNG I: GIỚI THIỆU CHUNG ......................................................................................... 8 CHƢƠNG II: CƠ SỞ LÝ THUYẾT ........................................................................................ 10 I.Kiến trúc của android................................................................................................................ 10 1.1 Tầng ứng dụng(Application Layer) ............................................................................... 11 1.2 Application Framework.................................................................................................. 11 1.3 Library............................................................................................................................. 12 1.4 Android runtime............................................................................................................. 12
1.5 Linux kernel..................................................................................................................... 13 II.Android studio .......................................................................................................................... 13 III.Máy ảo Genemotion ............................................................................................................... 14 IV.Các thành phần chính trong Android Project ..................................................................... 16 4.1 AndroidManifest.xml ................................................................................................... 16 4.2 File R.java ....................................................................................................................... 17 V.Chu kỳ ứng dụng android........................................................................................................ 18 5.1 Chu kì sống thành phần.................................................................................................. 19 5.2 Activity Stack................................................................................................................... 19 5.3 Các trạng thái của chu trình sống ................................................................................. 20 VI. Các thành phần của giao diện.............................................................................................. 22 6.1 Đơn vị đo kích thước trong Android.............................................................................. 22 6.2 View và ViewGroup ........................................................................................................ 23 6.3 Button .............................................................................................................................. 25 6.4 ListView ........................................................................................................................... 25 6.5 TextView .......................................................................................................................... 26
GVHH: TS. Đặng Hải Đăng
4
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP 6.6 Menu và Action Bar........................................................................................................ 27 6.7 Activity and intent ........................................................................................................... 29 6.8 WebView .......................................................................................................................... 30 6.9 ImageView....................................................................................................................... 31 VII. XML ....................................................................................................................................... 31
VIII.RSS ........................................................................................................................................ 32 XIX. Thư viện Picasso ................................................................................................................. 32 CHƢƠNG III: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ................................................. 33 I.Đặc tả bài toán ........................................................................................................................... 33 II. Sơ đồ thiết kế hệ thống ........................................................................................................... 34 2.1.Màn hình chính: .............................................................................................................. 34 2.2.Phân chia từng màn hình chức năng............................................................................. 35 III.Giao diện chính của hệ thống : ............................................................................................ 37 3.1 AndroidManifest.xml ...................................................................................................... 37 3.3.Chức năng đọc báo......................................................................................................... 40 3.4.Giao diện chức năng đọc sách....................................................................................... 41 3.5 Giao diện chức năng đọc truyện tranh.......................................................................... 42 3.6. Giao diện chức năng từ Google.................................................................................... 43 3.7 Giao diện chức năng nghe nhạc .................................................................................... 44 3.8.Giao diện chức năng xem video..................................................................................... 45 3.9 Menu ................................................................................................................................ 45 3.10. Giao diện chức năng xem lại những thông tin đã xem............................................. 46 III.Kết luận ................................................................................................................................... 47 TÀI LIỆU THAM KHẢO.......................................................................................................... 48
GVHH: TS. Đặng Hải Đăng
5
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
PHỤ LỤC HÌNH ẢNH
Hình 1: Cấu trúc stack của hệ thống android. ............................................................................ 10 Hình 2:Hình ảnh giao diện chính của máy ảo Genymotion ....................................................... 15 Hình 3: Hình ảnh máy ảo Samsung Galaxy S6- 5.0.0-API 21 ................................................... 15 Hình 4: Chu kì sống chu kì ........................................................................................................... 19 Hình 5: Activity Stack ................................................................................................................... 19 Hình 6: Mô tả vòng đời của Activity ............................................................................................ 20 Hình 7 : Hình ảnh kích thước đo thực tế ..................................................................................... 23 Hình 8 :Mô hình sử dụng View. ................................................................................................... 23 Hình 9: 1 số thuộc tính chung của View và ViewGroup............................................................. 24 Hình 10: Bố trí các widget sử dụng LinearLayout ..................................................................... 25 Hình 11: Danh sách ListView....................................................................................................... 26 Hình 12: Giao diện của menu ...................................................................................................... 28 Hình 13: Giao diện Action Bar .................................................................................................... 29 Hình 14 :truyền dữ liệu giữa 2 Activity ....................................................................................... 30 Hình 15: ImageView ..................................................................................................................... 31 Hình 16: Layout màn hình chức năng chính ............................................................................... 34 Hình 17: Layout chức năng bậc 2 và bậc 3................................................................................. 35 Hình 18: Nhóm chức năng web .................................................................................................... 36 Hình 19: Nhóm chức năng khác................................................................................................... 36 Hình 20: Giao diện chính của ứng dụng ..................................................................................... 38 Hình 21 :Danh sách các chuyên mục trang báo cung cấp. ........................................................ 40
GVHH: TS. Đặng Hải Đăng
6
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
Hình 22: Danh sách các tin tức được cập nhật........................................................................... 40 Hình 23: Đọc tin tức ..................................................................................................................... 41 Hình 24: Giao diện màn hình đọc sách ....................................................................................... 42 Hình 25: Giao diện chính của web truyện tranh......................................................................... 42 Hinh 26 : Khung hình đọc truyện tranh....................................................................................... 43 Hinh 27 : Giao diện tìm kiếm từ google ...................................................................................... 44 Hình 28 : Giao diện chức năng nghe nhạc.................................................................................. 44 Hình 29: Giao diện chức năng xem video ................................................................................... 45 Hình 30: Giao diện của menu và ActionBar ............................................................................... 46 Hình 31 : Click lịch sử xem .......................................................................................................... 46
GVHH: TS. Đặng Hải Đăng
7
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
CHƢƠNG I: GIỚI THIỆU CHUNG Android là hệ điều hành miễn phí, mã nguồn mở, được phát triển bởi "gã khổng lồ" Google. Android dựa trên nền tảng Linux, được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng.Phiên bản mới nhất của Android có hỗ trợ thêm các thiết bị khác như ô-tô, đồng hồ thông minh và TV. Ban đầu, Android được phát triển bởi Android Corporation, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005. Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở (Open Handset Alliance - một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho
các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008. Android có mã nguồn mở và Google đã phát hành mã nguồn theo Giấy phép Apache. Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được tùy biến và phân phối Android một cách tự do. Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo, chuyên viết các ứng dụng để mở rộng chức năng của thiết bị bằng ngôn ngữ lập trình Java có sửa đổi. Vào tháng 7 năm 2013, có hơn một triệu ứng dụng cho thiết bị Android được công bố, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính đạt khoảng 50 tỷ. Một cuộc khảo sát các nhà phát triển vào tháng 4 - 5 năm 2013 cho thấy hơn 71% lập trình viên cho di động đã phát triển ứng dụng cho Android. Tại sự kiện Google I/O 2014( "gã khổng lồ" công bố đã có hơn một tỉ người dùng Android hàng tháng, trong khi con số này vào tháng 6 năm 2013 mới chỉ là 538 triệu. Những yếu tố trên đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010 (chiếm 33%), và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng
GVHH: TS. Đặng Hải Đăng
8
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP tinh chỉnh, giá rẻ để chạy trên các thiết bị công nghệ cao thay vì xây dựng từ đầu. Kết quả là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên TV, máy chơi game, đồng hồ thông minh, ô-tô và các thiết bị điện tử khác.
Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở tạo ra những dự án do cộng đồng quản lý. Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác. Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 750 triệu thiết bị đã được kích hoạt. Vào tháng 4 năm 2013 đã có 1,5 triệu lượt kích hoạt mỗi ngày và tổng số thiết bị Android được kích hoạt lên đến 1 tỷ vào tháng 9 năm 2013. Sự thành công của hệ điều hành này cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
GVHH: TS. Đặng Hải Đăng
9
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
CHƢƠNG II: CƠ SỞ LÝ THUYẾT I.Kiến trúc của android Mô hình sau thể hiện 1 cách tổng quát các thành phần của hệ điều hành android.Mỗi 1 phần sẽ được đặc tả chi tiết dưới đây.
Hình 1: Cấu trúc stack của hệ thống android.
GVHH: TS. Đặng Hải Đăng
10
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP 1.1 Tầng ứng dụng(Application Layer) Android được tích hợp sẵn 1 số ứng dụng cần thiết cơ bản như: contacts , browser, camera, Phone,...Tất cả các ứng dụng chạy trên hệ điều hành android đều được viết bằng ngôn ngữ Java. 1.2 Application Framework Bằng cách cung cấp 1 nền tảng mở Android cung cấp các nhà phát triển khả năng xây dựng ứ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ểm truy cập,các dịch vụ chạy nền, thiết lập hệ thống thông báo, thêm các thông báo để các thanh trạng thái ,nhiều và nhiều hơn nữa. Nhà phát triển có thể truy cập vào các API cùng 1 khuôn khổ sử dụng bởi các ứng dụng lõi.Các kiến trúc ứng dụng được thiết kế đơn giản hóa việc sử dụng lại các thành phần; bất kì ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những khả năng(có thể hạn chế bảo mật được thực thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bởi người sử dụng. Cơ bản tất cả các ứng dụng là 1 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 thừa kế lẫn nhau dùng để thiết kế phần giao diện ứng dụng như: gridView, tableview, linearLayout...
Một “context 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,graphics, and layout files.
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 Manager được dùng để quản lí chu trình sống của các ứng dụng và điều
hướng activity.
GVHH: TS. Đặng Hải Đăng
11
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP 1.3 Library Android bao gồm 1 tập hợp các thư viện C/C++ được thực hiện bởi nhiều thành phần khác nhau trong hệ điều hành Android.Điều này được thể hiện qua các nền tảng ứng dụng Android.Một số các thư viện cơ bản được liệt kê dưới đây:
System C library : a BSD-derived implementation of the standrad C system library(libc),tuned for embedded Linux-based devices.
Media Libraries-based on PacketVideo’s OpenCORE,the libraries support
playback and recording of many of popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG.
Surface Manager-Quản lí truy xuất vào hệ thống quản lí.
LibWebCore - a modern web browser engine which powers both and android browser and an embedbable web view.
SGL -the underlying 2D graphics engine.
3D Libraries -an implementation based on OpenGL ES 1.0 APIs;libraries use either hardware 3D acceleration (where avaiable)
or the included, highly
optimized 3D software rasterizer.
FreeType-bitmap and vector font rendering SQLite -a powerful and lightweight relational database engine available to all applications 1.4 Android runtime
Android bao gồm 1 tập hợp các thư viện cơ bản mà cung cấp hầu hết các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java. Tất cả các ứng dụng Android đều chạy trong tiến trình riêng. Máy ảo Dalvik đã được viết để cho 1 thiết bị có thể chạy nhiều máy ảo 1 cách hiểu quả. Các VM Dalvik thực thi các tập tin thực thi Dalvik(dex). Định dạng cả tối ưu hóa cho bộ nhớ tối thiểu.VM là dựa trên registerbased và chạy các lớp đã đc biên dịch bởi 1 trình biên dịch Java để chuyển thành các
GVHH: TS. Đặng Hải Đăng
12
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP định dạng dex.Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản như bộ nhờ luồng và quản lí bộ nhớ thấp. 1.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ư dịch vụ 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. II.Android studio Android Studio là môi trường phát triển tích hợp (IDE) chính thức dành cho phát triển nền tảng Android. Nó được ra mắt vào ngày 16 tháng 5, 2013 tại hội nghị Google I/O. Android Studio
được phát hành miễn phí theo giấy phép Apache Licence 2.0. Android Studio ở giai đoạn truy cập xem trước sớm bắt đầu từ phiên bản 0.1 vào tháng 5.2013, sau đó bước vào giai đoạn beta từ phiên bản 0.8 được phát hành vào tháng 6, 2014. Phiên bản ổn định đầu tiên được ra mắt vào tháng 12, 2014, bắt đầu từ phiên bản 1.0.
Dựa trên phần mềm IntelliJ IDEA của JetBrains, Android Studio được thiết kế đặc biệt để phát triển ứng dụngAndroid SDK bản mới nhất. Sau khi tải về thì bạn cài đặt thì bạn sẽ có một folder có tên "Android-sdk-xxx", hãy nhớ đường dẫn của nó nhé. Với những bạn xài Mac với Linux thì không cần cài, chỉ cần giải nén để có được một folder giống như trên. Nếu vẫn còn lúng túng thì mời anh em xem qua bài viết hướng dẫn về Android SDK.
Trình máy ảo VirtualBox mới nhất, hãy lựa chọn cho phù hợp với hệ điều hành mình đang sử dụng. Tải về xong thì cài VirtualBox như cài phần mềm bình thường rồi chạy lên một lần.
Tải về Genymotion, cũng lựa bản phù hợp với hệ điều hành trên máy tính của mình. Tải xong thì cài vào máy luôn. Trong lúc chờ tải thì hãy đăng kí cho mình một tài khoản Genymotion miễn phí ở đây. Nhớ kiểm tra email sau khi
GVHH: TS. Đặng Hải Đăng
13
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP đăng kí để kích hoạt tài khoản Android. Nó hỗ trợ các hệ điều hành Windows, Mac OS Xvà Linux,và là IDE chính thức của Google để phát triển ứng dụng Android gốc để thay thế cho Android Development Tools (ADT) dựa trên Eclipse. III.Máy ảo Genemotion Để sử dụng Genymotion, trước hết các bạn cần tải những công cụ sau: Khi đã tải và cài đặt xong Genymotion, hãy chạy ứng dụng này lên. Chúng ta sẽ đi qua một số bước thiết lập như sau: 1. Đăng nhập vào ứng dụng Genymotion bằng tài khoản mà bạn mới vừa đăng kí ở trên 2. Bạn sẽ được hỏi về việc chọn thiết bị giả lập môi trường Android ảo. Có rất nhiều máy ảo, ví dụ như HTC One, Xperia Z, Samsung Galaxy S4 cho đến các máy Nexus, có cả một số tablet ở đây nữa. Chọn lấy máy nào đó bạn thích, rồi tiếp tục nhấn nút Add và nút Next. Đợi cho máy ảo tải về, có thể sẽ hơi lâu đấy vì đến một hai trăm MB lận. Nên chọn những máy ảo có chữ "with Google Apps" để có sẵn những kho Google Play. 4. Quay trở lại giao diện chính của Genymotion, nhấp vào máy ảo mà bạn muốn chạy. Chờ một lát là máy sẽ xuất hiện lên như hình bên dưới. Tiếp đó bạn có thể dùng chuột để tương tác với máy ảo Android, đăng nhập tài khoản Google, thiết lập màn hình, tải app, nghịch app, vào phần settings.. 5. Đừng quên là bạn có thêm một loạt nút ảo giả lập ở bên cạnh màn hình đấy nhé. Có cả nút để truy cập vào webcam với dữ liệu địa điểm nữa.
GVHH: TS. Đặng Hải Đăng
14
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
Hình 2:Hình ảnh giao diện chính của máy ảo Genymotion
Hình 3: Hình ảnh máy ảo Samsung Galaxy S6- 5.0.0-API 21
GVHH: TS. Đặng Hải Đăng
15
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP IV.Các thành phần chính trong Android Project 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.
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á. Có thể nói file R.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.
package dtu.k12tpm.pbs.activity; public final class R { public static final class array { public static final int array_timeout=0x7f050000; } public static final class attr { } public static final class drawable { public static final int add=0x7f020000; public static final int backup_icon=0x7f020001; public static final int checkall=0x7f020002; } public static final class id { public static final int Button01=0x7f070006; public static final int Button02=0x7f070007; public static final int CheckBox01=0x7f070017;
GVHH: TS. Đặng Hải Đăng
17
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP } public static final class layout { public static final int contact_list=0x7f030000; public static final int content_sender=0x7f030001; public static final int friend_list=0x7f030002; } public static final class menu { public static final int context_menu=0x7f060000; public static final int menu_options=0x7f060001; public static final int options_menu=0x7f060002; } public static final class string { public static final int app_name=0x7f040001; public static final int context_menu_item_delete=0x7f04000b; public static final int context_menu_item_edit=0x7f04000a; } }
V.Chu kỳ ứng dụng android Một tiến trình android gói gọn 1 ứng dụng Android đã được tạo ra khi codes sẽ được run và sẽ còn được 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 biệt 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 1 kết hợp của :
GVHH: TS. Đặng Hải Đăng
18
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP Những phần của ứng dụng mà hệ thống biết đang chạy. Những phần như thế nào quan trọng với người dùng, bao nhiêu vùng chiếm nhớ trong hệ thống. 5.1 Chu kì sống thành phần Các thành phần ứng dụng có 1 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 có thể là active hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible
Start
Chu kì sống 1 ứng dụng Android active/inactive visible/invisible
End
Hình 4: Chu kì sống chu kì 5.2 Activity Stack Bên trong hệ thống các Activity được quản lí như 1 activity stack. Khi 1 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 và trở thành active.
Hình 5: Activity Stack
GVHH: TS. Đặng Hải Đăng
19
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP 5.3 Các trạng thái của chu trình sống
Hình 6: Mô tả vòng đời của Activity Mỗi activity là một lớp (class) kế thừa từ lớp android.app. Activity hoặc các lớp kế thừa từ nó. Ta xem lại Activity trong ví dụ ở chương trước: package vn.edu.humg.android_course.HelloWorld; import android.app.Activity; import android.os.Bundle; public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
GVHH: TS. Đặng Hải Đăng
20
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP setContentView(R.layout.main); } } Activity này sử dụng giao diện được khai báo trong file bố cục main.xml, trong thư mục res/layout bằng cách gọi lệnh: setContentView(R.layout.main) ; Cũng nhắc lại là mỗi Activity cần được khai báo trong file đặc tả ứng dụng ( AndroidManifest.xml ) như đã đề cập trong chương trước. Vòng đời của mỗi Activity trải qua các trạng thái nhất định. Tại mỗi trạng thái sẽ có sự kiện tương ứng được gọi đến. Các sự kiện này được khai báo trong lớp cơ sở ( android.app.Activity ). Chúng ta có thể nạp chồng các sự kiện này để theo dõi vòng đời của Activity và có những tác động thích hợp. Các sự kiện như vậy bao gồm: onCreate() – được gọi khi Activity được khởi tạo onStart() – được gọi khi Activity bắt đầu hiện ra (chúng ta bắt đầu nhìn thấy giao diện) onResume() – bắt đầu nhận các tương tác với người dùng onPause() – được gọi khi activity bi dừng lại để chuyển qua activity khác onStop() – được gọi khi activity biến mất khỏi màn hình onDestroy() – được gọi khi activity bị hủy (hủy chủ động hoặc bị hủy bởi hệ thống trong trường hợp hệ điều hành xác nhận thiếu RAM) onRestart() – được gọi khi activity được khởi động lại sau khi đã bị dừng Theo mặc định, Android studio sẽ tạo sẵn hàm onCreate() cho mỗi Activity mới được tạo ra. Thông thường người lập trình sẽ viết mã nguồn (code) liên quan đến việc khởi tạo giao diện đồ họa trong thân hàm này.
GVHH: TS. Đặng Hải Đăng
21
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP VI. Các thành phần của giao diện 6.1 Đơn vị đo kích thước trong Android Các đơn vị đo kích thước trong Android bao gồm: dp (hoặc dip) - Density-independent pixel (điểm ảnh không phụ thuộc vào mật độ màn hình). Một dp tương đương với một pixel trên màn hình có mật độ 160 dpi (160 điểm ảnh trên mỗi inch màn hình). Đây là đơn vị được khuyến nghị dùng trong hầu hết các trường hợp đặt kích thước của view trong layout. Chi tiết hơn về mật độ màn hình được đề cập ở phần sau của giáo trình. sp - Scale-independent pixel, đơn vị này tương tự dp, được dùng khi mô tả kích thước font chữ (font size) pt - Point. 1 point = 1/72 inch, dựa trên kích thước vật lý thật của màn hình. px – Pixel – một pixel vật lý trên màn hình, đơn vị này không được khuyên dùng trong thiết kế giao diện ứng dụng vìgiao diện sẽ hiển thị không đồng nhất trên các màn hình có độ phân giải khác nhau. Android định nghĩa 4 loại mật độ màn hình như sau: Mật độ thấp: Low density (ldpi) - 120 dpi Mật độ trung bình: Medium density (mdpi) - 160 dpi Mật độ cao: High density (hdpi) - 240 dpi Mật độ rất cao: Extra High density (xhdpi) - 320 dpi
GVHH: TS. Đặng Hải Đăng
22
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
Hình 7 : Hình ảnh kích thước đo thực tế 6.2 View và ViewGroup
Hình 8 :Mô hình sử dụng View. Như đã đề cập ở trên, mỗi Activity muốn hiển thị giao diện đồ họa cần chứa các thành phần giao diện khác như nút bấm, các nhãn, các ô nhập liệu, checkbox, radio button… Những thành phần như vậy trong Android được gọi chung là cácView. Tất cả các View đều được kế thừa từ lớp android.view.View .
GVHH: TS. Đặng Hải Đăng
23
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP Một hoặc nhiều View có thể được nhóm lại với nhau thành một ViewGroup. Mỗi ViewGroup cũng là một View, được dùng để nhóm các View con bên trong nó và hiển thị chúng theo một thứ tự hay quy luật nào đó. Mọi ViewGroup đều được kế thừa từ lớp android.view.ViewGroup. Các loại ViewGroup phổ biến nhất trong Android bao gồm: LinearLayout
AbsoluteLayout TableLayout RelativeLayout FrameLayout ScrollView Các View và ViewGroup tạo thành giao diện của Activity và thường được mô tả ngay trong file layout của Activity, nằm trong thư mục res/layout .
Hình 9: 1 số thuộc tính chung của View và ViewGroup
GVHH: TS. Đặng Hải Đăng
24
SVTT: Trần Ngọc Hiếu
ĐỒ ÁN TỐT NGHIỆP
Hình 10: Bố trí các widget sử dụng LinearLayout 6.3 Button Sở dĩ widget button được giới thiệu đầu tiên trong các widget khác vì đây có thể nói là đối tượng được sử dụng nhiều nhất trong hầu hết các ứng dụng Android. android:id="@+id/btnsearch" style="?android:attr/buttonStyleSmall" android:layout_width="50dp" android:layout_height="35dp" android:layout_marginLeft="5dp" android:layout_marginTop="20dp"
6.4 ListView Được sử dụng để thể hiện danh sách các thông tin theo từng cell. Mỗi cell thông thường được load lên từ 1 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 list thông tin lên 1 screen cần 3 yếu tố chính: