TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT VIỆN KỸ THUẬT CÔNG NGHỆ BÀI TẬP THỰC HÀNH LẬP TRÌNH DI ĐỘNG GV: Nguyễn Hữu Vĩnh 0 0 Mục Lục I. Tạo một ứng dụng Android. Phần thiết kế Layout:. LinearLayout trong Android.
RelativeLayout trong Android. SỰ KIỆN ANDROID. Xử lý sự kiện trong Layout (Handle event in Layout. Xử lí sự kiện bằng lớp nặc danh (Inline anonymous listener).
Kế thừa Interface OnClickListener .31 Bài tập 1 : Toast và tùy chỉnh Toast trong Android. 31 Bài tập 2: Alert Dialog (Hộp thoại cảnh báo) trong Android. Kết nối cơ sở dữ liệu. Tạo lớp java có tên là Notify.java cài đặt phương thức cảnh báo khi thoát Activity.
Cài đặt Activity đăng nhập như hình sau:. Cài đặt Activity quản lý sinh viên như hình sau:. Cài đặt Activity danh sách lớp học như hình sau:. Cài đặt Activity thêm lớp học:.
Cài đặt Activity chỉnh sửa lớp học như hình sau:. Cài đặt Activity hiển thị danh sách sinh viên như hình sau:. Cài đặt Activity thêm sinh viên như hình sau:. Cài đặt Activity chỉnh sửa sinh viên như hình sau:.
DANH SÁCH BÀI TẬP LỚN. 103 0 0 Bài tập 1: Xây dựng ứng dụng di động quản lý thư viện. 103 Bài tập 2: Xây dựng ứng dụng di động quản lý cửa hàng thời trang. 103 Bài tập 3: Xây dựng ứng dụng di động quản lí cửa hàng bán đĩa CD.
103 Bài tập 4: Xây dựng ứng dụng di động quản lí học sinh tiểu học. 103 Bài tập 5: Xây dựng ứng dụng di động quản lí việc sử dụng phòng học trong trường ĐH. 103 Bài tập 6: Xây dựng ứng dụng di động thi trắc nghiệm bằng lái xe 2 bánh. 103 Bài tập 7: Xây dựng ứng dụng di động quản lí cửa hàng bán xe gắn máy.
104 Bài tập 8: Xây dựng ứng dụng di động quản lí nhân sự. 104 Bài tập 9: Xây dựng ứng dụng di động quản lý dịch vụ cho thuê xe. 104 Bài tập 10: Xây dựng ứng dụng di động quản lí cửa hàng bán xăng. Xây dựng ứng dụng di động quản lí khách sạn.
Xây dựng ứng dụng di động món ăn. Xây dựng ứng dụng di động quản lí câu lạc bộ bóng đá:. 104 Bài tập 14: Xây dựng ứng dụng di động ghi nhớ địa điểm và thời gian:. 105 Bài tập 15: Xây dựng ứng dụng di động quản lý ảnh.
105 Bài tập 16: Xây dựng ứng dụng di động chat cho Android. Yêu cầu các chức năng sau:. 105 Bài tập 17: Xây dựng ứng dụng di động quản lý chi tiêu, thu nhập. 105 Bài tập 18: Xây dựng ứng dụng di động hướng dẫn du lịch TPHCM cho người nước ngoài.
106 Bài tập 19: Xây dựng ứng dụng di động quản lý nhật ký đa phương tiện trên nền Android. 106 Bài tập 20: Xây dựng ứng dụng di động tra cứu thông tin xe bus trên nền Android. 106 Bài tập 21: Xây dựng ứng dụng di động quản lý Pin trên điện thoại Android (Battery Saver). 107 Bài tập 22: Xây dựng ứng dụng di động từ điển ảnh đa phương tiện.
107 Bài tập 23: Xây dựng ứng dụng di động nghe đài trực tuyến. 107 Bài tập 24: Xây dựng ứng dụng contact. 108 Bài tập 25: Xây dựng ứng dụng thời tiết dựa theo một nhà cung cấp dịch vụ thời tiết. 108 Bài tập 26: Viết chương trình thực hiện.
108 Bài tập 28: Viết chương trình đọc tin tức tổng hợp từ các báo. 108 Bài tập 29: Xây dựng ứng dụng có tính năng tương tự như Skim trên android. 109 Bài tập 30: Xây dựng ứng dụng nhận dạng biển số xe máy và xe ô tô. 109 Bài tập 31: Xây dựng ứng dụng thông báo thời tiết.
109 Bài tập 33: Xây dựng ứng dụng điểm danh sinh viên qua mã vạch trên thẻ sinh viên. 109 THỰC HÀNH TẠI LỚP. 110 Buổi 1: Layout và sự kiện Android. 110 Buổi 2: ANDROID WIDGETS.
110 0 0 Buổi 3: Menu, ContextMenu và Intent (rất quan trọng). 110 Buổi 4: Kết nối cơ sở dữ liệu. 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh I. Tạo một ứng dụng Android Trong bài chúng ta biết cách tạo 1 ứng dụng Hello trong Android đầu tiên.
Chúng ta sẽ tạo một ứng dụng đơn giản xuất Hello ra màn hình sử dụng công cụ Eclipse IDE. Các bước thực hiện: 1. Xuất câu thông báo 3. Chạy ứng dụng Ví dụ: Xuất Hello ra màn hình, bạn cần 3 bước như ở trên để tạo một ứng dụng 1.
Tạo 1 project Chọn File > New > Project. Chọn android project and click next Điền thông tin chi tiết trong hộp hội thoai và click Next Trang 1 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Trong đó: o Application Name : Đặt tên cho ứng dụng, chữ cái đầu tiên của từ phải viết hoa o Project Name: Đặt tên cho project, chữ cái đầu tiên của từ phải viết hoa o Package Name: Tên package o Minimum Required SDK : Là mức API tối thiểu để chạy ứng dụng o Target SDK : Là mức API có thể tương thích với ứng dụng này o Compile with: Là mức API tối đa ứng dụng có thể chạy o Theme: Giao diện cho ứng dụng Chọn nơi lưu trữ Project Trang 2 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Chọn Icon, Clipart hoặc Text cho Project, click Next Chọn template Avtivity cho Project trong ví dụ này chúng tôi chọn Blank Activity, click Next Khai báo Activity và Layout: Activity Name và Layout Name, click Finish Trang 3 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Bây giờ một project android đã được tạo ra. Bạn có thể xem chương trình đơn giản sau: 2. Xuất câu thông báo ra màn hình 3.
Chạy ứng dụng Android Để chạy ứng dụng Android. Click Right lên project của bạn > Run As. > Android Application Mất 2 hoặc 3 để chạy ứng dụng. Sau khi bật máy Emulator, Eclipse sẽ cài đặt ứng dụng và chạy ứng dụng, hiện ra màn hình sau:Mã nguồn Java của file MainActivity.java package com.hello; import android.Activity; import android.Bundle; import android.Menu; import android.MenuItem; import android.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.setText("Hello Hiep Si IT"); setContentView(txtHello); } Trang 4 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh II.
Phần thiết kế Layout: 1. LinearLayout trong Android LinearLayout LinearLayout là ViewGroup được sử dụng khá phổ biến cùng FrameLayout và RelativeLayout, LinearLayout được định nghĩa trong xml bởi cặp thẻ đóng mở <LinearLayout> và thẻ đóng </LinearLayout>.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!--View child--> </LinearLayout> Điểm đặc biệt của LinearLayout là có thể chia layout theo các tỉ lệ khác nhau. Chúng ta sẽ cùng nhau tìm hiểu ở dưới đây. Quy tắc layout LinearLayout sắp sếp các view con theo hai hướng: - Vertical: Sắp sếp view con theo chiều dọc.
Trang 5 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Các view được thêm vào sau sẽ được sắp xếp theo hướng mũi tên từ trên xuống, và không có view nào sẽ nằm đè lên view nào. - Horizontal: Sắp sếp các view con theo chiều ngang: Các view được thêm vào sau sẽ được sắp xếp theo hướng mũi tên từ trái qua phải, và không có view nào sẽ nằm đè lên view nào. Để xác định hướng mà LinearLayout sẽ layout các phần tử con theo vertical hay horizontal ta sử dụng thuộc tính sau: + Vertical: android:orientation="vertical" + Horizontal: android:orientation="horizontal" Ví dụ: với đoạn mã có thuộc tính android:orientation="vertical" Trang 6 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:background="#af5656" android:layout_width="match_parent" android:layout_height="50dp" /> <View android:background="#28c6a6" android:layout_width="match_parent" android:layout_height="50dp" /> <View android:background="#7c145f" android:layout_width="match_parent" android:layout_height="50dp" /> <View android:background="#c18936" android:layout_width="match_parent" android:layout_height="50dp" /> <View android:background="#062001" android:layout_width="match_parent" android:layout_height="50dp" /> </LinearLayout> Kết quả xuất ra giao diện Trang 7 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Và với đoạn mã tiếp theo thay đổi orientation thành: android:orientation="horizontal" <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <View android:background="#af5656" android:layout_width="50dp" android:layout_height="match_parent" /> <View android:background="#28c6a6" android:layout_width="50dp" android:layout_height="match_parent" /> <View android:background="#7c145f" android:layout_width="50dp" android:layout_height="match_parent" /> <View android:background="#062001" android:layout_width="50dp" android:layout_height="match_parent" /> </LinearLayout> Kết quả xuất ra giao diện Chia tỉ lệ layout Trang 8 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Ngoài cách sử dụng LinearLayout thông thường thì LinearLayout thường được sử dụng để phân chia tỉ lệ layout bằng cách sử dụng thuộc tính layout_weight và weightSum. weightSum: Xác định trọng số của LinearLayout hiện tại.
layout_weight: Trọng số mà view con trong LinearLayout chiếm giữ. Chia tỉ lệ không có weightSum Cùng xem xét đoạn mã sau: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#af5656" /> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4" android:background="#28c6a6" /> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" android:background="#7c145f" /> </LinearLayout> Chúng ta không đánh trọng số weightSum cho LinearLayout nên tổng trọng số của nó sẽ được tính bằng tổng trọng số (layout_weight) các view con cộng lại. Có nghĩa là LinearLayout này sẽ chia thành 7 phần: View thứ nhất có android:layout_weight="1" sẽ chiếm 1/7. View thứ hai có android:layout_weight="4" sẽ chiếm 4/7.
Trang 9 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh View thứ ba có android:layout_weight="2" sẽ chiếm 2/7. Kết quả chúng ta thấy như sau Nếu orientation là vertical <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#af5656" /> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="4" android:background="#28c6a6" /> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:background="#7c145f" /> </LinearLayout> Trang 10 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Kết quả xuất ra màn hình Chia tỉ lệ có weightSum Khác với cách trên weightSum được tính toán bằng tổng của cách layout_weight của các view con. Thì chúng ta có thể xác định giá trị weightSum cụ thể như sau: Ví dụ: Trong LinearLayout ta có thuộc tính android:weightSum="10" <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="10" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="5" android:background="#af5656" /> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:background="#28c6a6" /> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#7c145f" /> </LinearLayout> Trang 11 / 110 0 0 Bài tập thực hành phát triển ứng dụng di động Nguyễn Hữu Vĩnh Chúng ta xác định weightSum có giá trị là 10, có nghĩa là chia layout này thành 10 phần View thứ nhất chiếm 5/10 View thứ hai chiếm 2/10 View thứ ba chiếm 1/10 Còn lại 2/10 sẽ là khoảng trắng. Kết quả xuất ra màn hình: Điểm khác biệt của hai cách chia tỉ lệ này là chia tỉ lệ không có weightSum thì các view trong LinearLayout sẽ "phủ" đầy layout này (không có khoảng trống).
Còn với cách chia tỉ lệ có weightSum có thể sinh ra khoảng trống như ví dụ ở trên.