1/ Sự kiện Onclick
Đây là sự kiện rất thường phải xử lý khi lập trình ứng dụng Android. Trong ví dụ sau đây, đặt một bức hình có kích thước nhỏ trong ứng dụng, viết mã để khi người dùng nhấn vào hình ảnh đó thì nó sẽ thay đổi kích thước để rộng và dài bằng kích thước màn hình.
Tạo ứng dụng với các thông tin như sau:
Project Name: GiaoDien2 Build Target: Android 2.3.3 Application Name: GiaoDien2 PackageName: hoangNguyen.AndroidCourse.GiaoDien2 Create Activity: GiaoDien2Activity |
Tìm 1 hình ảnh bất kì có phần mở rộng là .jpg hoặc .png. Chép hình ảnh đó vào thư mục res/drawable-mdpi. Trong trường hợp này tôi sẽ sử dụng tập tin có tên oto.jpg.
Về giao diện, chúng ta sẽ sử dụng 1 LinearLayout chứa một ImageView, rồi canh ImageView vào chính giữa của LinearLayout. Viết mã cho tập tin res/layout/main.xml như sau:
Về giao diện, chúng ta sẽ sử dụng 1 LinearLayout chứa một ImageView, rồi canh ImageView vào chính giữa của LinearLayout. Viết mã cho tập tin res/layout/main.xml như sau:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#ffffff" android:gravity="center">
<ImageView
android:id="@+id/imageView1" android:layout_width="200dp" android:layout_height="wrap_content" android:src="@drawable/oto" android:scaleType="fitXY" android:adjustViewBounds="true" android:background="#ff0000"/> </LinearLayout> |
Khởi chạy ứng dụng trên Emulator, kết quả hiển thị như sau:
Bây giờ, chúng ta sẽ viết mã bắt sự kiện người dùng click vào tấm hình chiếc ôtô. Trong trường hợp này là click vào ImageView có thuộc tính id là imageView1. Việc này thực hiện trong phương thức onCreate của lớpGiaoDien2Activity. Chúng ta sẽ lần lượt thực hiện các thao tác sau.
Bây giờ, chúng ta sẽ viết mã bắt sự kiện người dùng click vào tấm hình chiếc ôtô. Trong trường hợp này là click vào ImageView có thuộc tính id là imageView1. Việc này thực hiện trong phương thức onCreate của lớpGiaoDien2Activity. Chúng ta sẽ lần lượt thực hiện các thao tác sau.
Tạo một đối tượng thuộc lớp OnClickListener và override phương thức onClick của nó như sau:
Hiểu một cách đơn giản, ở đây chúng ta đang tạo ra một đối tượng nghe ngóng xem nếu người dùng click vào phần tử View v nào đó thì sẽ kích hoạt phương thức onClick(View v). Muốn thực hiện điều gì trên đối tượng bị click này thì chúng ta sẽ can thiệp vào tham số v của phương thức onClick vừa nói. Như đã đề cập, chúng ta sẽ thiết lập để ImageView rộng và cao đúng bằng kích thước màn hình thiết bị.
Hiểu một cách đơn giản, ở đây chúng ta đang tạo ra một đối tượng nghe ngóng xem nếu người dùng click vào phần tử View v nào đó thì sẽ kích hoạt phương thức onClick(View v). Muốn thực hiện điều gì trên đối tượng bị click này thì chúng ta sẽ can thiệp vào tham số v của phương thức onClick vừa nói. Như đã đề cập, chúng ta sẽ thiết lập để ImageView rộng và cao đúng bằng kích thước màn hình thiết bị.
Chúng ta sẽ override phương thức onClick như sau:
@Override public void onClick(View v) { // TODO Auto-generated method stub ImageView iv = (ImageView)v; LinearLayout ll = (LinearLayout) iv.getParent(); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ll.getWidth(),ll.getHeight()); iv.setLayoutParams(lp); } |
Việc tiếp theo chúng ta sẽ lấy về phần tử ImageView có id là imageView1. Để thực hiện điều này, chúng ta sẽ sử dụng phương thức findViewById như sau:
ImageView iv = (ImageView) findViewById(R.id.imageView1); |
Phương thức findViewById sẽ nhận vào tham số là id của phần tử và trả về đối tượng tương ứng.
Sau đó chúng ta sẽ thiết lập đối tượng OnClickListener đã tạo cho đối tượng mà chúng ta đã lấy được như sau:
Sau đó chúng ta sẽ thiết lập đối tượng OnClickListener đã tạo cho đối tượng mà chúng ta đã lấy được như sau:
iv.setOnClickListener(imageClick); |
Chạy ứng dụng trên Emulator, click vào hình và kiểm tra kết quả thu được.
2/ Các sự kiện khác
Ngoài Interface đã xét là OnClickListener, lớp View còn cung cấp các Interface khác để chúng ta implement trong trường hợp cần bắt các sự kiện, danh sách các interface này được liệt kê sau
- OnCreateContextMenuListener
- OnCreateContextMenuListener
- OnFocusChangeListener
- OnKeyListener
- OnLongClickListener
- OnTouchListener
Về cách thức xử lý cũng gần tương tự như trên. Các bạn hãy tự thực hiện trong các ứng dụng của mình để hiểu rõ hơn.
Comments[ 0 ]
Đăng nhận xét