Imageview Change state when clicked – Android

Hôm nay vô http://stackoverflow.com/
thấy chủ đề này có thể sẽ có nhiều người quan tâm, nên mình quyết định viết một bài để xử lý điều này, bởi nếu bạn làm theo những gì họ đưa ra nó sẽ không hoạt động như mong muốn của bạn trong ListView hay GridView .

Topic Link : http://stackoverflow.com/questions/4617898/how-can-i-give-imageview-click-effect-like-a-button-in-android .

Đây chắc chắn không phải là giải pháp duy nhất làm điều này, nhưng nó luôn làm việc cho tớ trong mỗi project. Ok, để làm điều này bạn cần setup cho ImageView một sự kiện setOnTouchListener, để kiểm soát xem người dùng muốn gì, Vì chúng ta đang làm việc trên smartphone do đó việc người dùng lấy ngón tay lướt trên màn hình là đường nhiên, vì vậy bạn cần biết khi nào người dùng thực sự muốn một action thực sự, nếu họ chỉ lướt qua item đó thôi mà bạn lại chuyển nó qua một Action khác mà người dùng không muốn thì sai logic chương trình .

Solution trên stackoverflow :

21

Nếu bạn chỉ làm như ở trên, thì giả sử trên screen của bạn có nhiều ImageView, người dùng muốn Scroll xuống để click vào imageView họ muốn nhưng khi họ lấy tay lướt ở trạng thái đầu thì ACTION_DOWN sẽ được gọi , nếu bạn xử lý startIntent trong bước này thì chắc chắn là sai lầm vì họ không muốn một action cho ImageView đó . Bởi vậy bạn cần biết khi nào họ muốn một action thực sự, và để làm được điều này bạn cần chuẩn bị một biến để xác định điều đó .

Mã xử lý như sau :

Screenshot from 2012-12-13 18:27:08

Nếu là ACTION_DOWN thì WANT_SWITCH = true;
Nếu là ACTION_CANCEL thì WANT_SWITCH = false;

Và trong ACTION_UP sẽ quyết định người dùng muốn gì .

hình ảnh : khi click vào image sẽ change state nhưng nó vẫn biết khi nào user muốn gì 😀
Screenshot from 2012-12-13 19:04:36

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s