bai 3 - giao dien nguoi dung

Post on 29-May-2017

222 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

LẬP TRÌNH ANDROID

BÀI 3: GIAO DIỆN NGƯỜI DÙNG

Khóa đào tạo Lập trình di động đa nền tảng HNPT – 04/2013

Trung tâm Tính toán Hiệu năng cao, ĐH Bách Khoa Hà Nội

2

Nội dung

 Giao diện người dùng

 View  Text, Button, List, Grid, …

 Layout  LinearLayout, AbsolutLayout, TableLayout, …

 Thực hành

3

Nội dung

 Giao diện người dùng

 View  Text, Button, List, Grid, …

 Layout  LinearLayout, AbsolutLayout, TableLayout, …

 Thực hành

4

Giao diện người dùng

 GUI trong Java: AWT, Swing, SWT, LWUIT, … và Android GUI.

 Mô hình: Model-View-Control  Model: database, contacts, etc. Một

model có thể được sử dụng cho nhiều View-Control

 View: hình ảnh hóa của Model. Android tổ chức View dưới dạng cây để quản lý

 Controller: đáp lại các thao tác bên ngoài như phím nhấn, chạm vuốt, cuộc gọi đến, v.v. Được biểu diễn dưới dạng hàng đợi sự kiện.

5

Giao diện người dùng

 Việc lấy event từ hàng đợi và gọi callback của Controller là đơn luồng (single-threaded)  Đảm bảo mỗi event trong hàng đợi được xử lý hoàn toàn và theo đúng thứ tự như trong hàng đợi

 Giao diện sẽ bị đóng băng nếu quá trình xử lý lâu, Android có thể sẽ đề nghị đợi hoặc đóng ứng dụng.

6

Giao diện người dùng

 Android sử dụng lớp View và ViewGroup  Widgets, kế thừa từ View: thiết kế các đối tượng trên giao diện.  Layout, kế thừa từ ViewGroup: chứa các layout và view khác.

 Một giao diện cho Activity có cấu trúc dạng cây

7

Nội dung

 Giao diện người dùng

 View  Text, Button, List, Grid, …

 Layout  LinearLayout, AbsolutLayout, TableLayout, …

 Thực hành

8

View

 Lớp View cung cấp các khối cơ bản cho các thành phần giao diện người dùng.

 Một View là một vùng chữ nhật trên màn hình, có thể vẽ lên và tương tác.

 View là lớp cơ bản cho widgets tạo ra các đối tượng giao diện (text, button, etc.)

9

View > Sử dụng View

 Các View trong 1 cửa sổ được thiết kế dưới dạng 1 cây duy nhất, mô tả dưới định dạng XML.

 Khởi tạo View:  Trong tệp tin Layout  Trong code khi chạy chương trình.

 Các thao tác thông thường trên View  Set properties: thiết lập thuộc tính. Ví dụ: text, ID, căn chỉnh v.v…  Set focus: chuyển tập trung sang đối tượng.  Set up listeners: đặt listener cho đối tượng và xử lý khi có tương tác.

Ví dụ: setOnFocusChangeListener(..)  Set visibility: Ẩn hiện đối tượng View.

 Chú ý: Android chịu trách nhiệm căn chỉnh, sắp xếp và vẽ các đối tượng, ta không cần tự gọi các method này.

10

View > Widgets

 Lớp con của View  TextView  EditText  Button  RadioButton  etc…

 UI events  onSomethingListener

– OnClickListener – OnTouchListener – OnKeyListener – …

11

View > Ví dụ

setContentView(R.layout.hello_activity); //will load the XML UI file

12

View > ListView

 Tạo ra danh sách đối tượng có thể kéo  Các đối tượng tự động thêm vào list qua một ListAdapter.  Danh sách có thể đặt trước trong 1 mảng.

13

View > Một số View khác

TabView GridView FrameLayout

14

View > Một số View khác

WebView MapView SurfaceView

15

Nội dung

 Giao diện người dùng

 View  Text, Button, List, Grid, …

 Layout  LinearLayout, AbsolutLayout, TableLayout, …

 Thực hành

16

Layout

 Định nghĩa vị trí các phần tử quan hệ với nhau  cạnh nhau  trên, dưới  bảng, lưới, danh sách  …

17

Layout > Layout và Activity

18

Layout > LinearLayout

 Sắp xếp các đối tượng một cách tuần tự  Hàng ngang  Hàng dọc

19

Layout > Relative Layout

 Sắp xếp vị trí các đối tượng một cách tương đối  Ví dụ: Về bên trái, phía dưới của Layout.  Rất hữu ích trong việc thiết kế các Layout lồng

20

Layout > TableLayout

 Hiển thị các đối tượng View con theo hàng và cột

21

Layout > XML file

Cấu trúc dạng cây!

22

Layout > Khởi tạo đối tượng trong code

23

Nội dung

 Giao diện người dùng

 View  Text, Button, List, Grid, …

 Layout  LinearLayout, AbsolutLayout, TableLayout, …

 Thực hành

24

Thực hành > TabLayout

 Một activity / tab

25

Thực hành > TabLayout

 Tạo 3 activities

public class ArtistsActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

TextView textview = new TextView(this); textview.setText("This is the Artists tab"); setContentView(textview); } }

Tương tự với AlbumsActivity và SongsActivity

Khởi tạo từ code!!!

26

Thực hành > TabLayout

Chuẩn bị 3 icons,

Tạo ./res/drawable (nếu chưa có)

Copy icons vào ./res/drawable

27

Thực hành > TabLayout

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected, use grey --> <item android:drawable="@drawable/ic_tab_artists_grey" android:state_selected="true" /> <!-- When not selected, use white--> <item android:drawable="@drawable/ic_tab_artists_white" /> </selector>

Tương tự với ic_tab_albums.xml và ic_tab_songs.xml

28

Thực hành > TabLayout

  <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp" /> </LinearLayout> </TabHost>

29

Thực hành > TabLayout

public void onCreate(Bundle savedInstanceState)

super.onCreate(savedInstanceState); setContentView(R.layout.main);

Resources res = getResources(); // Resource object to get Drawables TabHost tabHost = getTabHost(); // The activity TabHost TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each tab

// Create an Intent to launch an Activity for the tab (to be reused) intent = new Intent().setClass(this, ArtistsActivity.class);

// Initialize a TabSpec for each tab and add it to the TabHost spec = tabHost.newTabSpec("artists").setIndicator("Artists",

res.getDrawable(R.drawable.ic_tab_artists)) .setContent(intent); tabHost.addTab(spec);

// Do the same for the other tabs [………………………] tabHost.setCurrentTab(2); }

TabActivity là activity chính, có TabHost

Ánh xạ resource vào tab

Chọn Tab 2

30

Thực hành > TabLayout

 Chạy chương trình

31

Thực hành > ListView

 Cho phép cuộn items

 Có thể thừa kế ListActivity!

 Item định nghĩa trong ./res/layout/list_item.xml

<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="20sp" > </TextView>

32

Thực hành > ListView

 OnCreate public class HelloListView extends ListActivity { /** Called when the activity is first created. */

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));

ListView lv = getListView(); lv.setTextFilterEnabled(true);

lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // When clicked, show a toast with the TextView text Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } }); } }

Hằng mảng chứa tên các nước

Hiển thị 1 message khi 1 item được click

33

THANKS AND QUESTION ?

34

Bài tập

1.  Thực hiện lại 2 ví dụ về tablayout và listview

2.  Viết chương trình hiển thị 1 câu hỏi và 4 đáp án. Khi người dùng nhấn nút trả lời thì hiện thông báo đúng hay sai (Dùng RadioButton và RadioGroup)

3.  Viết chương trình thu nhập thông tin người dùng (tên, tuổi, giới tính, ngày tháng năm sinh), khi nhấn nút submit thì hiển thị lại thông tin vừa nhập (dùng DatePicker cho ngày tháng năm sinh)

top related