Sự kiện là một cách hữu ích để thu thập dữ liệu về tương tác của người dùng với các thành phần tương tác của Ứng dụng. Giống như nút nhấn hoặc màn hình cảm ứng vv Khung Lập trình Android duy trì hàng đợi sự kiện như cơ sở đầu tiên, đầu tiên (FIFO). Bạn có thể nắm bắt những sự kiện này trong chương trình của mình và thực hiện hành động thích hợp theo yêu cầu.
Đăng ký tổ chức sự kiện - Đăng ký sự kiện là quá trình mà Trình xử lý sự kiện được đăng ký với Trình xử lý sự kiện để trình xử lý được gọi khi Trình xử lý sự kiện kích hoạt sự kiện.
Xử lý sự kiện - Khi một sự kiện xảy ra và chúng tôi đã đăng ký trình xử lý sự kiện cho sự kiện, trình xử lý sự kiện gọi Trình xử lý sự kiện, là phương thức thực sự xử lý sự kiện.
Trình xử lý sự kiện & Trình xử lý sự kiện
Có rất nhiều trình nghe sự kiện có sẵn như là một phần của lớp View như OnHoverListener, OnDragListener vv có thể cần thiết cho ứng dụng của bạn. Vì vậy, tôi khuyên bạn nên tham khảo tài liệu chính thức về phát triển ứng dụng Android trong trường hợp bạn sẽ phát triển một ứng dụng tinh vi.
Sử dụng tệp Layout activity_main.xml để chỉ định trình xử lý sự kiện trực tiếp.
Phần dưới đây sẽ cung cấp cho bạn các ví dụ chi tiết về tất cả ba kịch bản -
isFocusable () - nó trả về true hoặc false
isFocusableInTouchMode () - kiểm tra xem xem có thể lấy nét ở chế độ cảm ứng không. (Chế độ xem có thể được lấy nét khi sử dụng khóa phần cứng nhưng không thể khi thiết bị ở chế độ cảm ứng)
Ở đây bạn sẽ tạo ra một sự thực hiện ẩn danh của người nghe và sẽ hữu ích nếu mỗi lớp được áp dụng cho một điều khiển duy nhất và bạn có lợi thế để truyền đối số cho trình xử lý sự kiện. Trong phương pháp xử lý sự kiện tiếp cận này có thể truy cập dữ liệu cá nhân của Hoạt động. Không cần tham khảo để gọi tới Hoạt động.
Nhưng nếu bạn áp dụng trình xử lý cho nhiều điều khiển, bạn sẽ phải cắt và dán mã cho trình xử lý và nếu mã cho trình xử lý dài, nó sẽ làm cho mã khó duy trì hơn.
Sau đây là các bước đơn giản để hiển thị cách chúng ta sẽ sử dụng lớp Listener riêng biệt để đăng ký và nắm bắt sự kiện nhấp chuột. Tương tự như cách bạn có thể triển khai trình lắng nghe của mình cho bất kỳ loại sự kiện được yêu cầu nào khác.
Sau đây là nội dung của tệp hoạt động chính đã sửa đổi src / com.example.myapplication / MainActivity.java . Tệp này có thể bao gồm từng phương thức vòng đời cơ bản.
Sau đây sẽ là nội dung của tệp res / layout / activity_main.xml
Ở đây abc cho biết về biểu tượng hướng dẫn
Hãy thử chạy ứng dụng myapplication của bạn . Tôi cho rằng bạn đã tạo AVD của mình trong khi thiết lập môi trường. Để chạy ứng dụng từ Android Studio, mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.
Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau -
Bây giờ bạn cố gắng bấm vào hai nút, từng cái một và bạn sẽ thấy phông chữ của văn bản Hello World sẽ thay đổi, điều này xảy ra vì phương thức xử lý sự kiện bấm đã đăng ký đang được gọi với mỗi sự kiện nhấp chuột.
Có ba khái niệm sau liên quan đến Quản lý sự kiện Android
Trình nghe sự kiện - Trình xử lý sự kiện là một giao diện trong lớp Chế độ xem có chứa một phương thức gọi lại duy nhất. Các phương thức này sẽ được gọi bởi khung công tác Android khi Chế độ xem mà người nghe đã được đăng ký được kích hoạt bởi tương tác của người dùng với mục trong giao diện người dùng.Đăng ký tổ chức sự kiện - Đăng ký sự kiện là quá trình mà Trình xử lý sự kiện được đăng ký với Trình xử lý sự kiện để trình xử lý được gọi khi Trình xử lý sự kiện kích hoạt sự kiện.
Xử lý sự kiện - Khi một sự kiện xảy ra và chúng tôi đã đăng ký trình xử lý sự kiện cho sự kiện, trình xử lý sự kiện gọi Trình xử lý sự kiện, là phương thức thực sự xử lý sự kiện.
Trình xử lý sự kiện & Trình xử lý sự kiện
| Xử lý sự kiện | Trình xử lý sự kiện & mô tả |
|---|---|
| trong một cái nhấp chuột() | OnClickListener () Điều này được gọi khi người dùng nhấp hoặc chạm hoặc tập trung vào bất kỳ tiện ích nào như nút, văn bản, hình ảnh, v.v. Bạn sẽ sử dụng trình xử lý sự kiện onClick () để xử lý sự kiện đó. |
| onLongClick () | OnLongClickListener () Điều này được gọi khi người dùng nhấp hoặc chạm hoặc tập trung vào bất kỳ tiện ích nào như nút, văn bản, hình ảnh, v.v. trong một hoặc nhiều giây. Bạn sẽ sử dụng trình xử lý sự kiện onLongClick () để xử lý sự kiện đó. |
| onFocusChange () | OnFocusChangeListener () Điều này được gọi là khi các widget mất tập trung tức là của nó. người dùng rời khỏi mục xem. Bạn sẽ sử dụng bộ xử lý sự kiện onFocusChange () để xử lý sự kiện đó. |
| onKey () | OnFocusChangeListener () Điều này được gọi khi người dùng tập trung vào mục và nhấn hoặc nhả khóa phần cứng trên thiết bị. Bạn sẽ sử dụng onKey () để xử lý sự kiện như vậy. |
| onTouch () | OnTouchListener () Điều này được gọi khi người dùng nhấn phím, nhả phím hoặc bất kỳ cử chỉ cử động nào trên màn hình. Bạn sẽ sử dụng trình xử lý sự kiện onTouch () để xử lý sự kiện đó. |
| onMenuItemClick () | OnMenuItemClickListener () Điều này được gọi khi người dùng chọn một mục menu. Bạn sẽ sử dụng trình xử lý sự kiện onMenuItemClick () để xử lý sự kiện đó. |
| onCreateContextMenu () | onCreateContextMenuItemListener () Điều này được gọi khi menu ngữ cảnh đang được xây dựng (là kết quả của một nhấp chuột dài kéo dài) |
Đăng ký người nghe sự kiện
Đăng ký sự kiện là quá trình mà Trình xử lý sự kiện được đăng ký với Trình xử lý sự kiện để trình xử lý được gọi khi Trình xử lý sự kiện kích hoạt sự kiện. Mặc dù có một số cách khéo léo để đăng ký trình xử lý sự kiện của bạn cho bất kỳ sự kiện nào, nhưng tôi sẽ liệt kê chỉ 3 cách hàng đầu, trong đó bạn có thể sử dụng bất kỳ sự kiện nào dựa trên tình huống.Sử dụng một lớp bên trong vô danh
Lớp Activity thực hiện giao diện Listener.Sử dụng tệp Layout activity_main.xml để chỉ định trình xử lý sự kiện trực tiếp.
Phần dưới đây sẽ cung cấp cho bạn các ví dụ chi tiết về tất cả ba kịch bản -
Chế độ cảm ứng
Người dùng có thể tương tác với thiết bị của họ bằng cách sử dụng các phím hoặc nút phần cứng hoặc chạm vào màn hình. Chạm vào màn hình sẽ đưa thiết bị vào chế độ cảm ứng. Sau đó, người dùng có thể tương tác với nó bằng cách chạm vào các nút ảo ảo, hình ảnh, v.v. Bạn có thể kiểm tra xem thiết bị có ở chế độ cảm ứng hay không bằng cách gọi phương thức isInTouchMode () của lớp Xem.Tiêu điểm
Chế độ xem hoặc tiện ích thường được đánh dấu hoặc hiển thị con trỏ nhấp nháy khi được lấy nét. Điều này cho biết rằng nó đã sẵn sàng chấp nhận đầu vào từ người dùng.isFocusable () - nó trả về true hoặc false
isFocusableInTouchMode () - kiểm tra xem xem có thể lấy nét ở chế độ cảm ứng không. (Chế độ xem có thể được lấy nét khi sử dụng khóa phần cứng nhưng không thể khi thiết bị ở chế độ cảm ứng)
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) ; }
Ví dụ xử lý sự kiện
Đăng ký người nghe sự kiện bằng cách sử dụng một lớp bên trong vô danhỞ đây bạn sẽ tạo ra một sự thực hiện ẩn danh của người nghe và sẽ hữu ích nếu mỗi lớp được áp dụng cho một điều khiển duy nhất và bạn có lợi thế để truyền đối số cho trình xử lý sự kiện. Trong phương pháp xử lý sự kiện tiếp cận này có thể truy cập dữ liệu cá nhân của Hoạt động. Không cần tham khảo để gọi tới Hoạt động.
Nhưng nếu bạn áp dụng trình xử lý cho nhiều điều khiển, bạn sẽ phải cắt và dán mã cho trình xử lý và nếu mã cho trình xử lý dài, nó sẽ làm cho mã khó duy trì hơn.
Sau đây là các bước đơn giản để hiển thị cách chúng ta sẽ sử dụng lớp Listener riêng biệt để đăng ký và nắm bắt sự kiện nhấp chuột. Tương tự như cách bạn có thể triển khai trình lắng nghe của mình cho bất kỳ loại sự kiện được yêu cầu nào khác.
| Bậc thang | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android studio IDE để tạo một ứng dụng Android và đặt tên nó là myapplication theo một gói com.example.myapplication như được giải thích trong chương Hello World Example . |
| 2 | Sửa đổi tệp src / MainActivity.java để thêm trình xử lý sự kiện nhấp chuột và trình xử lý cho hai nút được xác định. |
| 3 | Sửa đổi nội dung detault của tệp res / layout / activity_main.xml để bao gồm các điều khiển giao diện người dùng Android. |
| 4 | Không cần phải khai báo các hằng số chuỗi mặc định. Studio Android có các hằng số mặc định quan tâm. |
| 5 | Chạy ứng dụng để khởi chạy trình giả lập Android và xác minh kết quả của các thay đổi được thực hiện trong ứng dụng. |
package com.example.myapplication; import android.app.ProgressDialog; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; 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); } }); } }
Sau đây sẽ là nội dung của tệp res / layout / activity_main.xml
Ở đây abc cho biết về biểu tượng hướng dẫn
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Event Handling " android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point " android:textColor="#ff87ff09" android:textSize="30dp" android:layout_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/abc" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Small font" android:id="@+id/button" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Font" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_alignRight="@+id/button" android:layout_alignEnd="@+id/button" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" android:layout_below="@+id/button2" android:layout_centerHorizontal="true" android:textSize="25dp" /> </RelativeLayout>Sau đây sẽ là nội dung của res / values / strings.xml để xác định hai hằng số mới
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">myapplication</string> </resources>Sau đây là nội dung mặc định của Android Manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.myapplication.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Hãy thử chạy ứng dụng myapplication của bạn . Tôi cho rằng bạn đã tạo AVD của mình trong khi thiết lập môi trường. Để chạy ứng dụng từ Android Studio, mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.
Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau -
![]() |
| ảnh minh họa |
Bây giờ bạn cố gắng bấm vào hai nút, từng cái một và bạn sẽ thấy phông chữ của văn bản Hello World sẽ thay đổi, điều này xảy ra vì phương thức xử lý sự kiện bấm đã đăng ký đang được gọi với mỗi sự kiện nhấp chuột.

Không có nhận xét nào:
Đăng nhận xét