1. Trang chủ
  2. » Luận Văn - Báo Cáo

ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới

71 341 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 3,14 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lời mở đầuTrong chuyên đề này, tôi sẽ trình bày về ứng dụng Android giúp xem thời tiết tạithời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới.. Dự báo thời tiết là một ngành ứng

Trang 1

Mục lục

Mục lục……… 1

Danh mục bảng 4

Danh mục hình ảnh 5

Lời mở đầu 7

Chương 1 Sự cần thiết của dự báo thời tiết 8

1.1 Dự báo thời tiết là gì ? 8

1.2 Lịch sử phát triển của dự báo thời tiết 8

1.3 Sự cần thiết của dự báo thời tiết 9

Chương 2 Cơ sở lý thuyết Android 9

2.1 Sự ra đời và lịch sử phát triển Android 9

2.2 Kiến trúc Android 13

2.2.1 Tầng Applications 14

2.2.2 Tầng Application framwork 15

2.2.3 Tầng Library và Android Runtime 15

2.2.4 Linux Kernel 16

2.3 Chu kỳ ứng dụng Android 17

2.3.1 Chu kỳ sống thành phần 17

2.3.2 Activity Stack 18

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

2.3.4 Chu kỳ sống của ứng dụng 19

2.3.5 Các sự kiện trong chu kỳ sống của ứng dụng 20

2.3.6 Thời gian sống của ứng dụng 21

2.3.7 Thời gian hiển thị của Activity 21

2.3.8 Các phương thức của chu kỳ sống 21

2.4 Các thành phần giao diện trong Android 23

2.4.1.View 23

2.4.2.ViewGroup 23

- FrameLayout 24

- AbsoluteLayout 25

Trang 2

- RetaliveLayout 25

- TableLayout 26

2.4.3 Button 27

2.4.4 ImageButton 28

2.4.5 ImageView 29

2.4.6 ListView 29

2.4.7 TextView 31

2.4.8 EditText 32

2.4.9 CheckBox 34

2.4.10 ContextMenu 35

2.4.11 Activity & Intennd 36

2.4.12 Cấu trúc Json 38

Chương 3 Cách xây dựng ứng dụng NiceWeather và demo ứng dụng 38

3.1 Đặc tả bài toán 39

3.2 Phác thảo ứng dụng 39

3.2.1 Chức năng xem thời tiết tại vị trí hiện tại của người dùng 39

3.2.2 Chức năng xem thời tiết tại một địa điểm bất kỳ 40

3.2.3 Chức năng xem thời tiết tại một địa điểm bất kỳ trên Google map 40

3.2.4 Chức năng xem dự báo thời tiết trong vài ngày tới 41

3.3 Chức năng 42

3.3.1 Xem thời tiết tại vị trí hiện tại của người dùng 42

3.3.2 Xem thời tiết tại bất kỳ địa điểm nào 43

3.3.3 Xem thời tại bất kỳ địa điểm nào trên Google Map 43

3.3.4 Xem dự báo thời tiết tại một địa điểm bất kỳ trên thế giới 44

3.4 Các biểu đồ hệ thống 44

3.4.1 Biểu đồ Usercase 44

3.4.2 Biểu đồ Class 45

o Biểu đồ Class giữa các thành phần giao diện 45

o Các class trong package model 46

o Các class trong package model_prediction 47

o Các class trong package utils 47

Trang 3

o Các class trong package weather 48

3.4.3 Biểu đồ tuần tự 49

- Weather my current location: Chức năng xem thời tiết tại vị trí hiện tại của người dùng. 49 - Weather by address: Chức năng xem thời tiết tại một địa điểm bất kỳ 49

- Weather by map: Chức năng xem thời tiết tại một vị trí bất kỳ trên Google Map 50

- Weather prediction by address: Chức năng xem dự báo thời tiết tại một địa điểm bất kỳ 50 3.4.4 Biểu đồ trạng thái 51

- Weather my current location: Chức năng xem thời tiết tại vị trí hiện tại của người dùng. 51 - Weather by address: Chức năng xem thời tiết tại một địa điểm bất kỳ 52

- Weather by map: Chức năng xem thời tiết tại một vị trí bất kỳ trên Google Map 52

- Weather prediction by address: Chức năng xem dự báo thời tiết tại một địa điểm bất kỳ 53 3.4.5 Biểu đồ hoạt động 54

- Weather my current location: Chức năng xem thời tiết tại vị trí hiện tại của người dùng. 54 - Weather by address: Chức năng xem thời tiết tại một địa điểm bất kỳ 55

- Weather by map: Chức năng xem thời tiết tại một vị trí bất kỳ trên Google Map 56

- Weather prediction by address: Chức năng xem dự báo thời tiết tại một địa điểm bất kỳ 573.5 Cách xây dựng ứng dụng 57

3.6 Demo ứng dụng 63

Các hình ảnh ứng dụng 63

Kết luận 68

Lời cám ơn 69

ĐÁNH GIÁ CỦA GIÁO VIÊN 69

Tài liệu tham khảo 70

Trang 4

Danh mục bảng

Trang 5

Danh mục hình ảnh

Chương 2

Chương 3

Trang 6

Lời mở đầu

Trong chuyên đề này, tôi sẽ trình bày về ứng dụng Android giúp xem thời tiết tạithời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới

Nội dung của chuyên đề có cấu trúc như sau:

Chương 1: Sự cần thiết của dự báo thời tiết.

Trình bày về sự cần thiết của dự báo thời tiết

Chương 2: Cơ sở lý thuyết Android.

Trình bày tổng quan về Android, các thành phần cơ bản trong Anroid

Chương 3 Cách xây dựng ứng dụng NiceWeather và demo ứng dụng.

Kết luận.

Tài liệu tham khảo.

Trang 7

Chương 1 Sự cần thiết của dự báo thời tiết

1.1 Dự báo thời tiết là gì ?

Dự báo thời tiết là một ngành ứng dụng của khoa học và công nghệ để tiên đoán

trạng thái và vị trí của bầu khí quyển trong tương lai gần Loài người đã nỗ lực dựbáo thời tiết một cách không chính thức từ nhiều thiên niên kỳ trước, và việc dự báothời tiết một cách chính thức bắt đầu từ thế kỷ mười chín Công tác dự báo thời tiếtđược thực hiện bằng cách thu thập số liệu về trạng thái hiện tại của bầu khí quyển

và áp dụng những hiểu biết khoa học về các quá trình của khí quyển để tiên đoán sựtiến triển của khí quyển

1.2 Lịch sử phát triển của dự báo thời tiết.

Con người đã cố gắng dự báo thời tiết trong nhiều thiên niên kỷ Năm 650 BC,người Babylon tiên đoán thời tiết dựa vào hình dạng của các đám mây cũng như dựavào chiêm tinh học Khoảng 340 BC, Aristotle miêu tả một phần thời tiết trong cuốnMeteorologica.Sau đó, Theophrastus đã biên soạn một cuốn sách về dự báo thời tiết,gọi là Sách của dấu hiệu Tục ngữ về dự báo thời tiết của người Trung Hoa có lẽ có

từ khoảng 300 BC, mà cũng là vào cùng khoảng thời gian những nhà thiên văn cổđại Ấn Độ phát triển các phương pháp dự báo thời tiết Năm 904 AD, cuốn Nôngnghiệp Nabatean của Ibn Wahshiyya nói về dự báo thời tiết liên quan tới sự thay đổikhí quyển và dấu hiệu dự báo liên quan tới thay đổi từ các hành tinh và các ngôisao; dấu hiệu của mưa dựa trên quan sát các pha Mặt Trăng; và dự báo thời tiết dựatrên sự chuyển động của gió

Phương pháp dự báo thời tiết của người cổ đại thường dựa trên quan sát một phầncủa những sự kiện, và do vậy chỉ nhận ra được một phần của thời tiết sẽ xảy ra nhưthế nào Ví dụ, nếu quan sát thấy khi Mặt Trời lặn có màu đỏ, thì ngày hôm sau thờitiết khá thuận lợi Kinh nghiệm như thế được tích lũy qua nhiều thế hệ tựu lại thànhtục ngữ về thời tiết Tuy nhiên không phải mọi tiên đoán này đều tin cậy được, vànhiều câu trong dân gian về thời tiết đã không còn thỏa mãn đối với các thử nghiệmthống kê nghiêm ngặt

Trang 8

Cho đến khi phát minh ra điện báo năm 1835 thì thời kỳ hiện đại của dự báo thờitiết mới bắt đầu Trước thời điểm này, thực tế không thể truyền tin từ nơi xa vềtrạng thái hiện tại của thời tiết nhanh hơn một chuyến tàu hơi nước (và tàu chạybằng hơi nước cũng mới được phát minh ở thời đó) Cuối những năm 1840, điệnbáo đã cho phép báo cáo điều kiện thời tiết trên một vùng rộng lớn một cách tứcthời, cho phép dự báo từ những hiểu biết về điều kiện thời tiết ngoài việc thu thập sốliệu từ hướng gió Hai nhà khoa học khai sinh ra khoa học dự báo thời tiết là FrancisBeaufort (tên tuổi ông gắn với thang Beaufort) và người bảo trợ của ông là RobertFitzroy (người phát triển áp kế Fitzroy) Cả hai đều có ảnh hưởng đến hải quân vàchính phủ Vương quốc Anh, mặc dù ở thời điểm đó có những nhạo báng trên báochí về công việc của hai ông, nghiên cứu của họ lại đạt được niềm tin khoa học, vàđược Hải quân Hoàng gia chấp nhận, từ đó trở thành những kiến thức cơ sở cho dựbáo thời tiết ngày nay Để truyền đạt thông tin (dữ liệu đo đạc và quan sát tình hìnhthời tiết hiện tại) một cách chính xác, cần thiết phải có từ vựng tiêu chuẩn miêu tảnhững khái niệm liên quan đến thời tiết (như mây, gió ); đối với mây cho tớinhững năm 1890 đã có những bộ atlas hoàn thiện mô tả nó.

Và đến này với việc có những vệ tinh, việc dự báo thời tiết đã trở lên đơn giản hơnrất nhiều

1.3 Sự cần thiết của dự báo thời tiết.

Trong thời đại ngày nay, với sự phát triển nhanh của xã hội, thì nhu cầu đi chơi, du lịch hay các buổi tổ chức sự kiện ngoài trời ngày càng tăng, hay việc làm nông (phụ thuộc rất nhiều vào thời tiết) Vì thế mà việc xem dự báo thời tiết là rất cần thiết

Chương 2 Cơ sở lý thuyết Android

2.1 Sự ra đời và lịch sử phát triển Android.

Ngày nay hệ điều hành Android đã trở nên quá quen thuộc với số lượng thiết

bị sử dụng đứng đầ, chiếm gần 50% số lượng người dùng và không ngừng tăngtrưởng Vậy điều gì đã khiến cho sản phẩm của gã khổng lồ google thành công đến

Trang 9

vậy? Hay trước đó, nó đã được ra đời ra sao và trưởng thành thế nào? Bài viết này

sẽ cung cấp những thông tin tổng quan về hệ điều hành Android

- 10/2013, Android (inc) ra đời như một hãng phần mềm, với mục tiêu tạo ra

những thiết bị thông minh, đáp ứng nhu cầu của người dùng

- 8/2005, gã khổng lồ Google mua lại Android với toàn bộ nhân viên.

- 11/2007, Open Handset Alliance – Liên minh thiết bị cầm tay mở rộng ra đời

với các thành viên Texas Instruments, Tập đoàn Broadcom, Google, HTC,Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm,Samsung Electronics, Sprint Nextel và T-Mobile

- 10/2008, hệ điều hành Android đã chính thức trở thành phần mềm mã nguồn

mở

- 11/2008, Liên minh OHA ra mắt gói phát triển phần mềm Android SDK cho

nhà lập trình Theo đó, các công ty thứ ba được phép thêm những ứng dụngcủa riêng của họ vào Android và bán chúng mà không cần phải hỏi ý kiếnGoogle

- 12/2008, có thêm 14 thành viên mới gia nhập dự án Android được công bố,

gồm có ARM Holdings, Atheros Communications, Asustek Computer Inc,Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, và Vodafone GroupPlc

Các phiên bản Android

Trang 10

Phiên bản đầu tiên của hệ điều hành Android ra đời vào tháng 9/2008 vàtháng 2/2009 không có tên gọi chính thức, sau này, những phiên bản tiếp theo ra đờivới tên gọi là những món tráng miệng với vần đầu của bảng Anphabet C-D-E-F-G-H-I…

- Android Cupcake 1.5, 4/2009: Phiên bản này có một số tính năng đáng chú ý

như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình, tải videolên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím ảovới khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetoothtrong một khoảng cách nhất định, các widget và thư mục mới có thể cài đặtlinh động trên màn hình chủ

- Android Donut 1.6, 9/2009: Phiên bản này giúp Nâng cao trải nghiệm trên

kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép ngườidùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả năng tìmkiếm bookmarks, history, contacts và web trên màn hình chủ, bước đầu hỗtrợ màn hình độ phân giải WVGA

- Android Eclair 2.0 + 2.1, 10/2009 Phiên bản này có sự cải thiện rõ rệt trong

giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ và

độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩnHTML5, Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camerazoom kĩ thuật số tích hợp đèn flash, nâng cấp bàn phím ảo và kết nốiBluetooth 2.1

- 2.2 Android Froyo 5/2010: Phiên bản này chú trọng nâng cấp tốc độ xử lí,

giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm tínhnăng tạo điểm truy cập Wi-Fi Một tính năng đáng chú ý khác hỗ trợ chuyểnđổi nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phím đồng thời chophép cài đặt và cập nhật ứng dụng ở các thiết bị mở rộng bộ nhớ Một trong

Trang 11

những smartphone đầu tiên chạy phiên bản Android 2.2 Froyo là LGOptimus One.

- Android Gingerbread 2.3, 12/2010: Phiên bản này đã nâng cấp đáng kể giao

diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợcông nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nângcao tính năng copy–paste Cùng với phiên bản Gingerbread, Google cũng ramắt điện thoại đầu tiên của hãng sử dụng nền tảng này là Google Nexus S

- Android Honeycomb 3.0, 2/2011: Đây là phiên bản hệ điều hành dành riêng

cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet, từ các thaotác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail ).Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiềumàn hình home khác nhau, cho phép người dùng dễ dàng tùy biến giao diệnnếu muốn

- Android 4.0 Ice Cream Sandwich, cuối 2011 Đây cũng là lần đầu tiên

Google hợp nhất hệ điều hành dành cho smartphone và cho máy tính bảngvào làm một Android 4.0 cũng nhắm đến việc duyệt web nhanh hơn, tối ưuhóa hiệu suất hoạt động của thiết bị, kéo dài thời gian dùng pin…

- Android Jelly Bean 4.1 +4.2, 2012: quan trọng hơn hết của Jelly Bean không

phải là về giao diện hay ứng dụng mới mà về Project Butter giúp mang lại độmượt chưa từng có cho Android Theo như giải thích của Google, độ mượtnày có được là nhờ vào dự án Butter

- Android 4.3 Jelly Bean 4.3, 24/4/2013: đi kèm những tính năng mới như hỗ

trợ kết nối Bluetooth Smart, bộ API OpenGL ES 3.0, bổ sung tính năng sửdụng Wi-Fi để định vị ngay cả khi người dùng tắt kết nối này đi cùng nhiềuthay đổi lớn nhỏ khác

- Android 4.4 KitKat, 15/10/2013 với các cải tiến mới Chế độ toàn màn hình –

Immersive Mode, Hiệu ứng chuyển cảnh màn hình -Transition Manager,

Trang 12

Storage Access Framework, Chromium WebView, NFC,Cổng hồng ngoại –Infrared Blasters …

- Android L, 26/06/2014 với những cai tiến về chất lượng pin, giao diện thanh

thoát nhẹ nhàng theo thiết kế Material Design, Android Runtime (ART) đãđược sử dụng mặc định

- Android 5.0, 5.1 (Lollipop) Lollipop xuất hiện lần đầu tiên cùng chiếc

smartphone Nexus 9 của Google, được giới thiệu vào tháng 10.2014 Đếnnay, phiên bản này đã chiếm 36,1% thị phần các thiết bị Andorid có mặt trênthị trường Trong khi đó, phiên bản KitKat ra mắt năm 2013 chỉ chiếm34,3%, rớt xuống vị trí thứ 2 sau thời gian dài liên tục dẫn đầu bảng

- Android 6.0 (Marshmallow) Vào ngày 5/10/2015 phiên bản Android mới

nhất với mã hiệu Marshmallow (kẹo dẻo) đã chính thức được đưa vào sửdụng rộng rãi trên các hệ máy Nexus và các hãng điện thoại sử dụng Androidkhác

2.2 Kiến trúc Android

Hệ điều hành Android có các thành phần phần mềm chia thành 5 phần với 4tầng chính trong sơ đồ kiến trúc như hình dưới đây:

Trang 14

Hình 2-1 Cấu trúc stack hệ thống Android

Trang 15

Android framework chứa các dịch vụ quan trọng như:

- Activity Manager − Quản lý tất cả các phần của vòng đời (lifecycle) ứng

dụng và các hoạt động ngăn xếp (activity stack)

- Content Providers − Cho phép ứng dụng phát hành và chia sẻ dữ liệu với

ứng dụng khác

- Resource Manager − Cho phép truy cập tới những tài nguyên không phải là

mã nguồn như chuỗi, cài đặt màu, bố cục giao diện

- Notifications Manager − Giúp ứng dụng hiển thị thông báo và nhắc nhở

người dùng

- View System − Một tập hợp mở rộng giúp tạo giao diện người dùng.

2.2.3 Tầng Library và Android Runtime

Phía trên tầng Linux kernel là tầng libraries, chứa những thư viện hỗ trợ Một

số có thể kể đến như là bộ máy trình duyệt web mã nguồn mở WebKit, thư việnlibc, cơ sở dữ liệu SQLite tiện lợi cho việc lưu trữ và chia sẻ dữ liệu, thư viện hỗ trợthu phát âm thanh và video, thư viện SSL giúp bảo mật mạng…

Tầng này chứa tất cả các thư viện Java, được viết đặc biệt cho Android nhưcác thư viện framework, các thư viện xây dựng giao diện, đồ họa và cơ sở dữ liệu.Dưới đây là một số thư viện quan trọng mà các lập trình viên nên biết:

- android.app − Cung cấp quyền truy cập tới mô hình ứng dụng và là nền tảng

của mọi ứng dụng Android applications

- android.content − Cho phép truy cập nội dung, phát hành và tin nhắn giữa

các ứng dụng và các thành phần trong một ứng dung

- android.database − Được dùng để truy cập vào dữ liệu được đưa ra bởi bộ

phận cung cấp nội dung, bao gồm các lớp quản lý cơ sở dữ liệu SQLite

- android.opengl − Cho phép tương tác với thư viện đồ họa OpenGL ES 3D.

Trang 16

- android.os − Giúp ứng dụng truy cập những dịch vụ cơ bản của hệ điều hành

bao gồm tin nhắn, dịch vụ hệ thống và liên lạc nội bộ (inter-processcommunication)

- android.text − Được dùng để vẽ và thao tác văn bản trên màn hình.

- android.view − Các khối xây dựng cơ bản của giao diện người dùng.

- android.widget − Một tập hợp rất nhiều thành phần giao diện được xây

dựng sẵn như nút bấm (button), nhãn (label), danh sách hiển thị (list views),quản lý bố cục (layout managers)…

- android.webkit − Tập hợp các lớp (classes) cho phép trình duyệt web được

Ngoài ra, Android Runtime cũng chứa tập hợp các thư viện quan trong chophép người lập trình viết ứng dụng sử dụng ngôn ngữ lập trình Java

Trang 17

o Những phần của ứng dụng mà hệ thống biết đang chạy

o Những phần quan trọng như thế nào đối với người dùng Bao nhiêuvùng nhớ chiếm lĩnh trong hệ thống

2.3.1 Chu kỳ sống thành phần

Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúcbắt đầu khởi tạo và đến thời điểm kết thúc Giữa đó, đôi lúc chúng có thể là activehoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible

Hình 2-2 Chu kỳ sống một ứng dụng Android

2.3.2 Activity Stack

Bên trong hệ thống các activity được quản lý như một activity stack Khi mộtActivity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đang

Trang 18

chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trìnhactivity mới tồn tại.

Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trởthành active

Hình 2-3 Activity stack

Trang 19

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

Hình 2-4 Chu kỳ sống của Activity

Một Activity chủ yếu có 3 chu kỳ chính sau:

- Active hoặc running: Khi Activity là được chạy trên màn hình Activity nàytậ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ườidùng vẫn trông thấy Có nghĩa là một Activity mới ở trên nó nhưng khôngbao 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

Trang 20

2.3.4 Chu kỳ sống của ứng dụng

Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phầnđều có một chu trình sống riêng Và ứng dụng chỉ được gọi là kết thúc khi tất cả cácthành phần trong ứng dụng kết thúc Activity là một thành phần cho phép ngườidù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ườidùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứngdụng đã kết thúc Bởi vì ngoài Activity là thành phần có khả năng tương tác ngườidùng thì còn có các thành phần không có khả năng tương tác với người dùng như làService, Broadcast receiver Có nghĩa là những thành phần không tương tác ngườidùng có thể chạy background dưới sự giám sát của hệ điều hành cho đến khi ngườidùng tự tắt chúng

2.3.5 Các sự kiện trong chu kỳ sống của ứng dụng

Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ thôngtin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish() của nó), hoặc đơngiản giết tiến trình của nó Khi nó được hiển thị lần nữa với người dùng, nó phảiđược hoàn toàn restart và phục hồi lại trạng thái trước Khi một Activity chuyển quachuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó bằng việc gọi hàmtransition

Hình 2-5 Các hàm sự kiện trong một ứng dụng Android

Tất cả các phương thức là những móc nối mà bạn có thể override để làmtương thich công việc trong ứng dụng khi thay đổi trạng thái Tất cả các Activity bắt

Trang 21

buộc phải có onCreate() để khởi tạo ứng dụng Nhiều Activity sẽ cũng hiện thựconPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng hoạt độngvới người dùng.

2.3.6 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 đầu tiên gọi onCreate() đến trạngthá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ụctrong onCreate(), và giải phóng các tài nguyên đang tồn tại trong onDestroy()

2.3.7 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 đếnkhi gọi onStop() Trong suốt khoảng thời gian này người dùng có thể thấy activitytrên màn hình, có nghĩa là nó không bị foreground hoặc đang tương tác với ngườidù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

2.3.8 Các phương thức của chu kỳ sống

Phương thức: onCreate()

- Được gọi khi activity lần đầu tiên được tạo

- Ở đây bạn làm tất cả các cài đặt tĩnh tạo các view, kết nối dữ liệu đến list

- Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động

lần nữa (stared again)

- Luôn theo sau bởi onStart()

Phương thức: onStart()

Trang 22

- Được gọi trước khi một activity visible với người dùng.

- Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặconStop() nếu nó trở nên ẩn

Phương thức: onResume()

- Được gọi trước khi activity bắt đầu tương tác với người dùng

- Tại thời điểm này activity ở trên dỉnh của stack activity

- Luôn theo sau bởi onPause()

Phương thức: onPause()

- Được gọi khi hệ thống đang resuming activity khác

- Phương thức này là điển hình việc giữ lại không đổi dữ liệu

- Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ khôngđược resumed ngay cho đến khi nó trở lại

- Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu

nó trở nên visible với người dùng

- Trạng thái của activity có thể bị giết bởi hệ thống

Phương thức: onStop()

- Được gọi khi activity không thuộc tầm nhìn của người dùng

- Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa đượcresumed và bao phủ nó

- Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác vớingười dùng, hoặc onDestroy() nếu activity đang bỏ

- Trạng thái của activity có thể bị giết bởi hệ thống

Phương thức: onDestroy()

- Được gọi trước khi activity bị hủy

- Đó là lần gọi cuối cùng mà activity này được nhận

- Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạmthời bị hủy diệt để tiết kiệm vùng nhớ

- Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing()

Trang 23

Trạng thái của activity có thể được giết bởi hệ thống.

2.4 Các thành phần giao diện trong Android

2.4.1 View

Trong một ứng dụng Android, giao diện người dùng được xây dựng từ cácđối tượng View và ViewGroup Có nhiều kiểu View và ViewGroup Mỗi mộtkiểu là một hậu duệ của class View và tất cả các kiểu đó được gọi là các Widget.Tất cả mọi widget đều có chung các thuộc tính cơ bản như là cách trình bày vịtrí, background, kích thước, lề,… Tất cả những thuộc tính chung này được thểhiện hết ở trong đối tượng View

Trong Android Platform, các screen luôn được bố trí theo một kiểu cấutrú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ỗiActivity cần phải được gọi một hàm là setContentView(R.layout.main); hàm này

sẽ load giao diện từ file XML lên để phân tích thành mã bytecode

Hình 2-6 Cấu trúc một giao diện ứng dụng Android

Trang 24

2.4.2 ViewGroup

ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup

chính là các widget Layout được dùng để bố trí các đối tượng khác trong một

screen Có một số loại ViewGroup như sau:

- LinearLayout

LinearLayout được dùng để bố trí các thành phần giao diện theo chiềungang hoặc chiều dọc nhưng trên một line duy nhất mà không có xuốngdòng

LinearLayout làm cho các thành phần trong nó không bị phụ thuộc vàokích thước của màn hình Các thành phần trong LinearLayout được dàntheo những tỷ lệ cân xứng dựa vào các ràng buộc giữa các thành phần

Hình 2-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ướithì sẽ bị che khuất bởi các đối tượng thuộc Layer nằm trên FrameLayerthường được sử dụng khi muốn tạo ra các đối tượng có khung hình bênngoài chẳng hạn như contact image button

Trang 25

Android.co m

Trang 26

Hình 2-9 Bố trí các widget trong AbsoluteLayout

- RetaliveLayout

Layout này cho phép bố trí các widget theo một trục đối xứng nganghoặc dọc Để đặt được đúng vị trí thì các widget cần được xác định mộtmố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àngbuộ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ý

Trang 27

Hình 2-10 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ặccần bố trí các widget theo các row và column Chẳng hạn như, giao diệncủa một chiếc máy tính đơn giản hoặc một danh sách dữ liệu

Hình 2-11 Bố trí widget trong TableLayout

2.4.3 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 ứngdụng Android

Để thiết kế giao diện với Button ta có 2 cách như sau:

- Thiết kế bằng XML

<Button android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/cmdButton1"

android:text="Touch me!"

Trang 28

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ợpphương thức “touchMe” chưa được khai báo trong file mã nguồn tương ứngthì 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 Đốitượ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

VD: trong file mã nguồn khai báo một hàm như sau:

public void touchMe(View v)

Để khai báo một Button trong code ta làm như sau:

Button cmdButton = new Button(this);

cmdButon.setOnClickListener(…);

Để custom một widget nào đó ta phải tạo một class kế thừa từ classWidget muốn custom, sau đó sử dụng hàm draw để vẽ lại widget đó như mộtCanvas

VD: canvas.drawPicture(Picture.createFromStream( ));

2.4.4 ImageButton

Trang 29

Cũng tương tự như Button, ImageButton chỉ có thêm một thuộc tínhandroid:src = “@drawable/icon” để thêm hình ảnh vào và không có thẻ text.

Trang 30

Hình 2-13 ImageView và ImageButton

2.4.6 ListView

Được sử dụng để thể hiện một danh sách các thông tin theo từng cell Mỗicell 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ặcbấ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 DataSource 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àocho đố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 đó

Trang 31

Hình 2-14 Minh hoạ cho một ListView

Trang 33

o android:singleLine = “true” EditText của bạn sẽ trở thành mộtTextField, ngược lại sẽ là TextBox.

Trang 34

Hình 2-16 Minh họa cho một EditText

Trang 35

Khi nhấn dài vào một cell trong ListView thì phương thức:

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo)

sẽ được gọi và truyền vào 3 tham số là:

o ContextMenu: đối tượng để add các context menu item

o View: Đối tượng nơi mà xảy ra sự kiện

Ngày đăng: 01/07/2016, 12:56

HÌNH ẢNH LIÊN QUAN

Hình 3 – 3 Phác thảo chức năng xem thời tiết tại một địa điểm bất kỳ - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 3 Phác thảo chức năng xem thời tiết tại một địa điểm bất kỳ (Trang 40)
Hình 3 – 4 Phác thảo chức năng xem dự báo thời tiết trong vài ngày - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 4 Phác thảo chức năng xem dự báo thời tiết trong vài ngày (Trang 41)
Hình 3 – 7 Các class trong package model - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 7 Các class trong package model (Trang 46)
Hình 3 – 9 Các class trong package utils - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 9 Các class trong package utils (Trang 47)
Hình 3 – 10 Các class trong package weather - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 10 Các class trong package weather (Trang 48)
Hình 3 – 14 Biểu đồ tuần tự chức năng xem dự báo thời tiết tại một địa - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 14 Biểu đồ tuần tự chức năng xem dự báo thời tiết tại một địa (Trang 50)
Hình 3 – 18 Biểu đồ trạng thái của chức năng xem dự báo thời tiết tại một - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 18 Biểu đồ trạng thái của chức năng xem dự báo thời tiết tại một (Trang 52)
Hình 3 – 17 Biểu đồ trạng thái của chức năng xem thời tiết tại một vị trí bất - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 17 Biểu đồ trạng thái của chức năng xem thời tiết tại một vị trí bất (Trang 52)
Hình 3 – 20 Biểu đồ hoạt động của chức năng xem thời tiết tại một địa điểm - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 20 Biểu đồ hoạt động của chức năng xem thời tiết tại một địa điểm (Trang 54)
Hình 3 – 21 Biểu đồ hoạt động của chức năng xem thời tiết tại một vị trí bất - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 21 Biểu đồ hoạt động của chức năng xem thời tiết tại một vị trí bất (Trang 55)
Hình 3 – 22 Biểu đồ hoạt động của chức năng xem dự báo thời tiết tại một - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 22 Biểu đồ hoạt động của chức năng xem dự báo thời tiết tại một (Trang 56)
Hình 3-23 Cấu trúc Json cung cấp thông tin chi tiết thời tiết - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 23 Cấu trúc Json cung cấp thông tin chi tiết thời tiết (Trang 57)
Hình 3-24 Cấu trúc Json cung cấp thông tin dự báo thời tiết trong 5 ngày tới - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 24 Cấu trúc Json cung cấp thông tin dự báo thời tiết trong 5 ngày tới (Trang 58)
Hình 3 – 29 Giao diện chức năng xem thời tiết tại một điểm bất kỳ - ứng dụng android giúp xem thời tiết tại thời điểm hiện tại và xem dự báo thời tiết trong 5 ngày tới
Hình 3 – 29 Giao diện chức năng xem thời tiết tại một điểm bất kỳ (Trang 65)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w