Thật dễ dàng. Vì mỗi điều khiển trên màn hình là một lớp con của xem, bạn có thể làm một cái gì đó như thế này:
public static void logClicksOnMe(View v){
v.setOnClickListener(new View.OnClickListener{
@Override
public void onClick(View v){
//TODO Log code
}
});
}
Rõ ràng rằng sẽ phá hủy các thính giả mà bạn đã thiết lập trên đối tượng như vậy, nhưng bạn có thể làm một cái gì đó như thế này:
public static void setLoggedListener(View v, View.OnClickListener listener){
v.setOnClickListener(new View.OnClickListener{
@Override
public void onClick(View v){
//TODO Log code
if(listener!=null) listener.onClick(v);
}
});
}
Nhà phát triển sẽ phải đặt người nghe theo cách thủ công, nhưng anh đã phải làm như vậy, vì vậy không phải khối lượng công việc hoặc mã sẽ thay đổi nhiều. Lợi thế trên giao diện hoạt động onInterceptTouchEvent() là bạn hoàn toàn có thể kiểm soát chế độ xem nào sẽ được theo dõi và nhà phát triển không bị ràng buộc sử dụng hoạt động trừu tượng của bạn (giả sử anh ta đang sử dụng các hoạt động trừu tượng khác từ bên thứ ba, như SlidingActivity hoặc mọi thứ như vậy.), do đó, các nỗ lực bảo trì và triển khai khá nhỏ.
Nguồn
2015-10-29 17:56:49
cộng với một, điều tương tự tôi muốn, bạn có tìm thấy bất kỳ cách nào không? @Mark –