Lập trình giao diện với Android

23
Author: http://vnaking.com/ Email: [email protected] Lập trình giao diện với Android

description

Android design guidelines

Transcript of Lập trình giao diện với Android

Page 1: Lập trình giao diện với Android

• Author:http://vnaking.com/ • Email: [email protected]

Lập trình giao diện với Android

Page 2: Lập trình giao diện với Android

Mục tiêu

• Làm quen với các thành phần trong giao diện Android.

• Hiểu về XML layout.

• Biết cách xử lý các sự kiện xảy ra trong giao diện Android.

Page 3: Lập trình giao diện với Android

Activities và Tasks

• Activity – Dùng để hiển thị một màn hình.

– Thừa kế từ lớp android.app.Activity

– Các activity có những phương thức để bắt sự kiện sau (@Override):

• onCreate: activity “Lúc khởi tạo"

• onDestroy: activity “Lúc huỷ"

• onStart/onResume/onPause/onStop/onRestart flow

Page 4: Lập trình giao diện với Android

Activities và Tasks

• Task – Là một tiến trình được sử dụng thông qua Activity.

• Thường bắt đầu từ Home screen.

– Một task mới tạo ra một stack mới của activity

• Nút “back” sẽ gỡ bỏ task cao nhất và huỷ activity đó.

– Các task được phân biệt với nhau

• Task mới sẽ tạo một stack mới.

– Task có thể cross applications và processes

Page 5: Lập trình giao diện với Android

Các dạng của view

• View và ViewGroups – View là lớp cơ sở của “widgets”

– ViewGroup lớp cơ sở của Composite-patterned chứa các đối tượng khác của View.

– Mỗi Activity có thể giữ một nội dung view.

• Thông thường đây là một ViewGroup tạo thành một hệ thống phân cấp.

– Có thể tuỳ chỉnh View và ViewGroups

Page 6: Lập trình giao diện với Android

Các dạng của view

• Widgets (android.widget)

Page 7: Lập trình giao diện với Android

Các dạng của view

• Widgets (android.widget) – “Dạng push": Button, CompoundButton, CheckBox,

ImageButton, RadioButton – Dạng Text: EditText, TextView, NumberPicker, TextSwitcher – Graphics: Gallery, ImageSwitcher, ImageView – Selectors: RatingBar, SeekBar, Spinner, Switch – Time: AnalogClock, DigitalClock, Chronometer,

CalendarView, DatePicker, TimePicker – Composite: ListView, SlidingDrawer, TabHost – Media: MediaController – Space (tạo khoảng trống giữa các thành phần) – ...

Page 8: Lập trình giao diện với Android

Các dạng của view

• Layouts(android.widget) – LinearLayout: Sắp xếp theo hàng ngang/dọc

–RelativeLayout: Căn chỉnh giữa các view

–TableLayout: Sắp xếp theo bảng

–GridLayout: Sắp xếp theo lưới

–AbsoluteLayout: Sắp xếp theo toạ độ

– FrameLayout: Căn chỉnh dựa trên toạ độ gốc(top-left)

Page 9: Lập trình giao diện với Android

Các dạng của view

• Dialogs (android.app)

Page 10: Lập trình giao diện với Android

Các dạng của view

• Dialogs (android.app) (là trường hợp đặc biệt của Activity)

– AlertDialog (OK/Cancel/Help, v.v)

– ProgressDialog (56 of 100...)

– DatePickerDialog

– TimePickerDialog

• Được tạo ra & hiển thị như một phần của Activity, Dialog không phải là activity

Page 11: Lập trình giao diện với Android

Tạo giao diện trên Android

Có 2 cách để tạo giao diện trên Android

• Sử dụng bộ công cụ tạo bằng tay trên java.

• Sử dụng file layout XML-based

– File layout XML không được gắn với Activity

– Nó chỉ là một nhóm các View đặt trong 1 file XML

– Để hiển thị XML dưới dạng giao diện ta gọi Activity.setContentView()

XML

Page 12: Lập trình giao diện với Android

Layout Resources

• Layout Resources nằm ở thư mục res/layout

– Tên file XML tương ứng với R.layout.{tên-file}

– Phần tử gốc thường là ViewGroup (Layout class)

– android: namespace là bắt buộc

– Ký tự @ trong thuộc tính có ý nghĩa tham chiếu đến các resource đã khai báo

• @drawable/... Tham chiếu đến các file hình

• @android:id/... Tham chiếu đến một id

• @+id/id_name: Khai báo id của View/ViewGroup

Page 13: Lập trình giao diện với Android

Layout Resources

• Layout Resources có thể tuỳ chỉnh

– Các resource, layout có thể thay đổi cách bố trí để phù hợp với kiểu màn hình, thiết bị khác nhau

• screen size: "small", "normal", "large", "xlarge"

• orientation: "port", "land"

• pixel density: "ldpi", "mdpi", "hdpi", "xhdpi", ...

• platform version: "v3", "v4", "v7", ...

– Mặc định app sẽ ở layout dọc(portrait)

– Layout ngang(landscape ) nằm ở /res/layout-land/

Page 14: Lập trình giao diện với Android

Style

• Style là một bộ các attribute/value được khai báo sẵn để áp dụng cho view.

• Thuộc tính kế thừa của style: parent=“android:style/...”

Page 15: Lập trình giao diện với Android

Theme

• Theme là một style mà áp dụng cho toàn bộ activity (hay application)

• Thêm thuộc tính android:theme vào activity trong manifes

• Toàn bộ giá trị khai báo trong theme sẽ ghi đè lên giá trị manual của các view trong activity

Page 16: Lập trình giao diện với Android

Menu

• Activity có thể liên kết với mục trong menubar

– Menu thường được khai báo trong layout(res/menu)

• menu: khai báo 1 menu (chứa các mục)

• item: khai báo một mục nằm trong menu

• group: gom nhóm các mục

Page 17: Lập trình giao diện với Android

Menu

• Ví dụ về menu

<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/help" android:icon="@drawable/ic_help" android:title="@string/help" /> </menu>

Page 18: Lập trình giao diện với Android

ActionBar

ActionBar (3.0+)

• là một tập hợp menus/menuItems nằm phía trên cùng.

• Chỉ thích hợp cho thiết bị màn hình lớn

• Thư viện tự động tạo action bar:

– http://actionbarsherlock.com/

Page 19: Lập trình giao diện với Android

Xử lý sự kiện

• Hầu hết Views/ViewGroups đều cung cấp hàm xử lý sự kiện

• Nó được gọi là “InputEvents”:

– View.OnClickListeners: có thể khai báo trong XML layout

– Phần lớn các sự kiện được khai báo tại onCreate()

Page 20: Lập trình giao diện với Android

Intent

• Để di chuyển qua lại giữa các Activity thì cần phải thông qua một Intent

Intent next = new Intent(this, NextActivity.class);

startActivity(next);

• Intent cũng dùng để chuyển dữ liệu qua lại giữa các activity.

Page 21: Lập trình giao diện với Android

Tương tác với người dùng

Page 23: Lập trình giao diện với Android

Tài liệu tham khảo

• Android website

– https://developer.android.com/design

• Busy Coder’s Guide to Android

Mark Murphy, http://commonsware.com/