Diễn Đàn Tuổi Trẻ Việt Nam Uhm.VN - Hướng dẫn sự kiện quan trọng KeyEvent trong lập trình Android

Diễn Đàn Tuổi Trẻ Việt Nam Uhm.VN

Phiên bản đầy đủ: Hướng dẫn sự kiện quan trọng KeyEvent trong lập trình Android
Bạn đang xem phiên bản rút gọn. Xem phiên bản đầy đủ với định dạng thích hợp.


Trong bảng dưới đây cho thấy làm thế nào để xử lý một sự kiện chính khi học lập trình android. Để làm điều đó, bạn thực hiện các OnKeyListener đó là lồng trong lớp View và lắng nghe đó để bất kỳ widget. Ví dụ, người nghe trong hình này là dây vào một widget EditText. Kết quả là, khi widget EditText có sự tập trung và người dùng nhấn một phím cứng, các phương pháp onKey trong hình này được thực thi.

Một số hằng từ lớp KeyEvent

Hằng số Mô tả
KEYCODE_ENTER Các phím Enter trên bàn phím cứng.
Key KEYCODE_DPAD_CENTER Trung tâm trên D-Pad.
KEYCODE_DPAD_LEFT Các phím trái trên D-Pad.
KEYCODEDPADRIGHT Các phím chuột phải vào D-Pad.
KEYCODE_SPACE Các phím Space trên bàn phím cứng.
Trong phương pháp học android này, các mã bắt đầu bằng cách sử dụng một câu lệnh switch để ngăn chặn mỏ đó phần cứng chính là ép bởi người sử dụng. Để làm điều đó, câu lệnh switch sẽ kiểm tra các giá trị mã phím được chứa trong tham số thứ hai của phương pháp và so sánh rằng khóa mã để các giá trị liên tục được lưu trữ trong các lớp KeyEvent.

Nếu người dùng nhấn phím Enter hoặc phím Center trên D-Pad, mã này gọi phương thức calculateAndDisplay để thực hiện một tính toán và hiển thị kết quả cho người dùng. Sau đó, hai câu lệnh tiếp theo ẩn bàn phím mềm mại nếu nó được hiển thị. Để làm được điều đó, những tuyên bố đầu tiên sử dụng phương pháp getSystemService để có được một đối tượng InputMethodManager. Sau đó, câu lệnh thứ hai sử dụng đối tượng đó để ẩn bàn phím mềm.

Xử lý sự kiện Key event

Code:
©Override
public boolean onKey(View view, int keyCode, KeyEvent event)
{
switch (keyCode)
{
case KeyEvent. KEYCODE_ENTER:
case KeyEvent. KEYCODE_DPAD_CENTER :
calculateAndDisplayO ;
// hide the soft keyboard
InputMethodManager ixnm - (InputMethodManager)
getSystemService (Context. INPUT_METHOD_SERVICE);
imm. hideSof t InputFromWindow (billAmountEditText .getWindowToken (), 0);
// consume the event return true;
case KeyEvent. KEYCODE_DPAD_RIGHT:
case KeyEvent. KEYCODE_DPAD_LEFT:
if (view.getldO == R.id.percentSeekBar)
{ calculateAndDisplay();
}
break;
}
// don't consume the event return false;
}
Sau khi ẩn bàn phím mềm, mã này trả về một giá trị đích thực cho các phương pháp onKey. Điều này chỉ ra rằng phương pháp này đã được tiêu thụ các sự kiện Android. Kết quả là, sự kiện này không được chuyển đến các bậc cha mẹ của các widget hiện tại. Nói cách khác, nếu người dùng nhấn phím Enter Center hay, việc xử lý sự kiện này dừng lại và không được chuyển đến các widget EditText hoặc bất kỳ vật dụng mẹ của nó.

Nếu người dùng nhấn phím mũi tên trái hoặc phải vào một D-Pad, mã này bắt đầu bằng việc kiểm tra phụ tùng mà các sự kiện chính xảy ra vào. Nếu sự kiện xảy ra trên widget SeekBar, mã này gọi phương thức calculateAndDisplay. Sau đó, lệnh break sẽ thoát khỏi lệnh switch.

Bên ngoài các báo cáo chuyển đổi, mã này trả về giá trị false cho các phương pháp onKey. Điều này chỉ ra rằng phương pháp này đã không được tiêu thụ các sự kiện. Kết quả là, sự kiện này được thông qua vào các bậc cha mẹ của các widget hiện tại. Nói cách khác, khi người dùng nhấn phím nhất, chẳng hạn như số điện thoại hoặc thư phím, các sự kiện chính được thông qua vào các widget EditText và cha mẹ của nó để nó có thể được xử lý bình thường, mà thường là những gì bạn muốn là.