2012-02-26 28 views
8

Tôi đang làm việc trên một ứng dụng mà tôi muốn triển khai chức năng vuốt để bỏ qua trong ListView - tương tự như những gì chúng tôi thấy trong thanh thông báo của Android 4.0, danh sách ứng dụng gần đây hoặc tab trình duyệt. Tôi muốn chạy ứng dụng trên các thiết bị chạy Android 2.2 trở lên. Xem hình ảnh sau. Tôi cũng muốn thay đổi độ trong suốt của mục đang bị xóa đi - giống như trong ICS.Cách triển khai Android 4.0 như vuốt để bỏ qua chức năng trong ListView?

Android 4.0 Web Browser - Swiping away the open tabs http://img19.imageshack.us/img19/3605/screenshot2012022617290.png

Tôi đã kiểm tra nguồn gốc của các trình duyệt web ICS trên http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.0.1_r1/com/android/browser/TabScrollView.java?av=f nhưng không thể tìm ra những lớp đặc biệt trách nhiệm thi hành chức năng này.

Có ai có thể chỉ cho tôi đúng hướng ở đây không? Chúng tôi có thể thực hiện việc này bằng Thư viện tương thích Android không? Làm ơn cho tôi biết. Cảm ơn nhiều.

Trả lời

0

Tôi biết đây là một câu hỏi cũ nhưng đối với bất kỳ ai vẫn tìm kiếm điều này, bạn có thể xem thư viện của Roman Nurik tại đây: https://github.com/romannurik/Android-SwipeToDismiss

Điều này cho thấy cách tạo hành vi cần thiết cho chế độ xem danh sách cũng như chế độ xem bình thường.

3

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.

  1. 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.).
  2. Bộ điều hợp áp dụng View.OnTouchListener cho tất cả các Chế độ xem của nó.
  3. 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.
  4. 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;)

+0

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

+3

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

Các vấn đề liên quan