Tôi cũng đã nghĩ đến việc triển khai một tính năng như vậy, nhưng tôi chưa thực hiện nó. Vì vậy, điều duy nhất tôi có thể cung cấp là một số ý tưởng về cách I sẽ tiếp cận vấn đề đó. Nếu cuối cùng tôi đã viết một số mã, tôi sẽ đăng nó ở đây.
- Lớp chính cần thiết là Bộ điều hợp tùy chỉnh mở rộng
ListAdapter
(ArrayAdapter, SimpleCursorAdapter v.v.).
- Bộ điều hợp áp dụng View.OnTouchListener cho tất cả các Chế độ xem của nó.
- Bất cứ khi nào người nghe đó phát hiện một cuộn ngang
dx
, nó gọi concernedView.offsetLeftAndRight(dx)
(điều này sẽ làm cho chế độ xem có thể kéo được). Tất nhiên bộ điều hợp phải lưu bù đắp ngang hiện tại cho chế độ xem. Nếu người dùng đang kéo chế độ xem và xóa ngón tay của anh ấy/cô ấy khỏi màn hình, touchListener cũng sẽ phát hiện ra điều này và bắt đầu một hoạt ảnh chiếu lại. Sử dụng bù đắp hiện tại, chúng tôi cũng có thể tính giá trị alpha, vì vậy chế độ xem sẽ mờ dần khi nó tiếp cận đường viền màn hình.
- Nếu một mục nhập danh sách cuối cùng bị người dùng loại bỏ, điều đó trở nên hơi phức tạp và tôi vẫn không chắc chắn cách thực hiện hành động sau: Nội dung danh sách phải được cập nhật (hoặc bộ điều hợp phải bỏ qua các mục bị loại bỏ) và các chế độ xem bên dưới mục đã bị loại bỏ phải di chuột lên trên để lấp đầy khoảng trống. Tôi nghĩ rằng nó có thể làm việc để cho ListView tải nội dung mới, nhưng điều đó sẽ lấp đầy khoảng trống ngay lập tức. Để tránh điều đó, tôi sẽ bắt đầu một hoạt ảnh cho phép tất cả các khung nhìn có liên quan di chuyển từ vị trí cũ của chúng (nơi chúng ta vẫn còn khoảng trống) về vị trí hiện tại của chúng (nơi khoảng trống được lấp đầy).
Đây chỉ là một số suy nghĩ của tôi về vấn đề có thể giúp một số người bắt đầu khắc phục sự cố. Như tôi đã nói, tôi có thể sẽ thực hiện điều đó trong tương lai và dĩ nhiên tôi sẽ đăng mã ở đây.
Tôi sẽ đánh giá cao bất kỳ phản hồi nào trong các nhận xét, nhưng tôi không muốn giải thích từng khía cạnh về ý tưởng của mình, điều đó sẽ khiến tôi mất quá nhiều thời gian;)
Vâng, đó là một sự khởi đầu. Tôi sẽ cố gắng tạo ra một cái gì đó dựa trên điều này và sẽ cập nhật ở đây nếu tôi thành công. – iamronak
Trước khi bạn xóa chế độ xem, hãy kích hoạt chiều cao của nó là 0. Điều đó sẽ làm cho danh sách sụp đổ một cách độc đáo. Sau đó, một thông báo sẽ không phải là một snap jarring. – Hounshell