http://vietjack.com/android/index.jsp Copyright © vietjack.com Xử lý kiện (Event Handling) Android Các kiện (Event) cách hữu ích để thu thập liệu tương tác người dùng với thành phần tương tác ứng dụng Ví dụ kiện nhấn vào nút chạm vào hình, … Android Framework trì dãy dựa tảng First-In, First-out (FIFO) Bạn nắm bắt kiện chương trình thực hành đồng thích hợp tùy theo yêu cầu Liên quan tới Quản lý kiện Android, bạn cần quan tâm khái niệm sau: − • Event Listeners − Một Even Listener Interface lớp View mà chứa phương thức callback Các phương thức gọi Android Framework Listener đăng ký kích hoạt tương tác người dùng với item giao diện UI • Event Listeners Registration − Event Registration tiến trình mà Event Handler đăng ký với Event Listener Handler gọi Event Listener kích hoạt kiện • Event Handlers − Khi Event xảy ra, đăng ký Event Listener cho kiện, Event Listener gọi Event Handler, phương thức mà thực xử lý kiện Event Listeners & Event Handlers Event Handler Event Listener & Miêu tả onClick() OnClickListener() Được gọi người dùng nhấn chạm tập trung vào widget button, text, image Bạn sử dụng event handler onClick() để xử lý kiện onLongClick() OnLongClickListener() Được gọi người dùng nhấn chạm vào widget button, text, image vài giây Bạn sử http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/android/index.jsp Copyright © vietjack.com dụng event handler onLongClick() để xử lý kiện onFocusChange() OnFocusChangeListener() Được gọi widget tiêu điểm nó, ví dụ người dùng rời khỏi item view Bạn sử dụng event handler onFocusChange() để xử lý kiện onKey() OnFocusChangeListener() Được gọi người dùng tập trung vào item nhấn thả phím cứng thiết bị Bạn sử dụng event handler onKey() để xử lý kiện onTouch() OnTouchListener() Được gọi người dùng nhấn key, nhả phím động tác hình Bạn sử dụng event handler onTouch() để xử lý kiện onMenuItemClick() OnMenuItemClickListener() Được gọi người dùng lựa chọn item menu Bạn sử dụng event handler onMenuItemClick() để xử lý kiện onCreateContextMenu() onCreateContextMenuItemListener() Được gọi context menu xây dựng (là kết click liên tục thời gian dài) Ngồi có nhiều Event Listener có sẵn phần lớp View OnHoverListener, OnDragLister, … cần cho ứng dụng bạn Vì thế, tơi đề nghị bạn nên tham khảo Offical Documentation để phát triển ứng dụng Android phức tạp tinh vi Đăng ký Event Listener Android Đăng ký Event tiến trình mà Event Handler đăng ký với Event Listener handler gọi Event Listener kích hoạt kiện Mặc dùy có số http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/android/index.jsp Copyright © vietjack.com cách phức tạp để đăng ký Event Handler bạn cho kiện nào, tơi liệt kê cách bạn sử dụng tùy theo tình • Sử dụng lớp Inner nặc danh • Lớp Activity triển khai Listener Interface • Sử dụng layout file activity_main.xml để xác định trực tiếp Event Handler Phần cung cấp cho bạn ví dụ chi tiết cách − Touch Mode Người sử dụng tương tác với thiết bị họ sử dụng phím cứng nút chạm vào hình Việc chạm vào hình đặt thiết bị vào Touch Mode Sau đó, người dùng tương tác với việc chạm vào nút ảo, hình ảnh, … Bạn kiểm tra thiết bị Touch Mode việc gọi phương thức isInTouchMode() lớp View TOUCH EVENT Sự kiện Focus Android Một view widget thường làm bật hiển thị trỏ nhấp nháy Focus Điều sẵn sàng để chấp nhận đầu vào từ người dùng • isFocusable()Nó trả true false • isFocusableInTouchMode() Kiểm tra để biết view focusable Touch Mode (Một view focusable sử dụng phím cứng khơng focusable thiết bị Touch Mode) android:foucsUp="@=id/button_l" onTouchEvent() public boolean onTouchEvent(motionEvent event){ switch(event.getAction()){ case TOUCH_DOWN: Toast.makeText(this,"you have clicked down Touch button",Toast.LENTH_LONG).show(); break(); case TOUCH_UP: Toast.makeText(this,"you have clicked up touch button",Toast.LENTH_LONG).show(); break; case TOUCH_MOVE: Toast.makeText(this,"you have clicked move touch button"Toast.LENTH_LONG).show(); break; } return super.onTouchEvent(event) ; } http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/android/index.jsp Copyright © vietjack.com Phương thức onTouchEvent() Ví dụ xử lý kiện Android Ở đây, bạn tạo trình triển khai nặc danh Listener hữu ích lớp áp dụng control bạn phải truyền tham số cho Event Handler Trong hướng tiếp cận này, phương thức xử lý kiện truy cập liệu private Activity Không cần tham chiếu để gọi Activity Nhưng bạn áp dụng Handler cho nhiều control, bạn phải cắt dán code cho Handler code cho Handler dài, làm việc trì code trở nên khó khăn Sau bước đơn giản để minh họa cách sử dụng lớp Listener riêng rẽ để đăng ký nắm bắt click event Theo cách tương tự, bạn triển khai Listener bạn cho kiểu kiện Sau nội dung Main Activity file sửa đổi:src/com.example.myapplication/MainActivity.java package com.example.myapplication; public class MainActivity extends ActionBarActivity { private ProgressDialog progress; Button b1,b2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progress = new ProgressDialog(this); b1=(Button)findViewById(R.id.button); b2=(Button)findViewById(R.id.button2); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView txtView = (TextView) findViewById(R.id.textView); txtView.setTextSize(25); } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView txtView = (TextView) findViewById(R.id.textView); txtView.setTextSize(55); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } Sau nội dung res/layout/activity_main.xml file − http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/android/index.jsp Copyright © vietjack.com Sau nội dung res/values/strings.xml để định nghĩa hai − myapplication Settings Sau nội dung mặc định AndroidManifest.xml − http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 http://vietjack.com/android/index.jsp Copyright © vietjack.com Cuối cùng, bạn chạy ứng dụng Android vừa tạo http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1 ... xmlns :android= "http://schemas .android. com/apk/res /android" xmlns:tools="http://schemas .android. com/tools" android: layout_width="match_parent" android: layout_height="match_parent" android: paddingBottom="@dimen/activity_vertical_margin"... tools:context=".MainActivity">