10

OK! Tôi đã cố gắng để làm điều này trên và trong vài tuần qua và dường như không thể tìm thấy một giải pháp tốt để làm thế nào tôi có thể thực hiện những gì tôi muốn. Đã cố gắng với HorizontalScrollView, Thư viện (không được dùng nữa).Làm cách nào để ai đó có thể tạo danh sách cuộn ngang với hiệu ứng chụp vào trung tâm

Tôi hiện đang xem xét RecycleView vì tôi đã đi qua phương pháp này .smoothScrollToPosition() và nghĩ rằng có thể giúp tôi.

Dưới đây là một minh chứng về những gì tôi muốn đạt được:

enter image description here

Tôi cũng phải có khả năng để tạo ra các relativelayouts lập trình

bất cứ ai có thể chỉ ra cho tôi làm thế nào điều này có thể được thực hiện ? Có cách nào để làm điều đó không?

EDIT: Sau khi tìm hiểu thêm về @CommonsWare đề xuất về việc xem xét ViewPager và commonsware.com/blog/2012/08/20/ bài đăng thứ ba từ Dave Smith Tôi nghĩ đây là cách để thực hiện. Havent modefied nó để sử dụng của tôi được nêu ra, nhưng nó tìm kiếm tốt.

Tôi đang sử dụng mẫu Dave Smiths từ Github mình: https://gist.github.com/devunwired/8cbe094bb7a783e37ad1

+3

'ViewPager' có thể được sử dụng cho việc này, tùy thuộc vào mục tiêu của bạn: https://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html Xem cụ thể tùy chọn thứ ba, từ Dave Smith, trong bài viết đó. – CommonsWare

+0

Đây có thể chính xác là những gì tôi đang tìm kiếm. –

Trả lời

4

Không sử dụng cách tiếp cận đó, nó sẽ sử dụng vào bộ nhớ nhiều (nếu tại một số điểm bạn sẽ cần phải mở rộng đến một giải pháp chung chung hơn) vì bạn sẽ phải giữ một số nâng cao của ViewPager Trang (Fragment) trong bộ nhớ. Tôi đã có thử thách này và tôi đã thực hiện điều này với HorizontalListView. Vì vậy, bạn cần phải tạo ra một "stubs" View để có được cái đầu tiên hoặc cái cuối cùng (có thể phụ thuộc nhiều hơn vào các khung nhìn hiển thị mong muốn cùng một lúc) ở giữa màn hình. vì đây là ListView. Đối với các hiệu chụp bạn có thể sử dụng một cái gì đó như thế này (tất cả các mục cần phải có kích thước tương đương):

View.OnTouchListener hListViewsOnTouchListener = new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_UP && v instanceof HListView) { 
        View c = ((HListView) v).getChildAt(0); 
        int posToGo = Math.abs(c.getX()) < c.getWidth()/2 ? ((HListView) v).getFirstVisiblePosition() : ((HListView) v).getFirstVisiblePosition() + 1; 
        ((HListView) v).smoothScrollToPositionFromLeft(posToGo, 0); 
       } 
       return false; 
      } 
     }; 

Cách tiếp cận này không chỉ sử dụng ít bộ nhớ nhưng nó chung chung về số lượng lượt xem đứa trẻ, nó mượt mà và tất cả các yếu tố đều có thể click (không chỉ là một trung tâm) ... cũng đó là một ListView :)
Dưới đây là một ảnh chụp màn hình của ví dụ đầu ra cuối cùng:
enter image description here enter image description here enter image description here

Tak e chăm sóc.

+0

Bạn không vui khi có một đoạn mã mẫu mà tôi có thể sử dụng? –

+0

https://play.google.com/store/apps/details?id=me.mesmo.app – GuilhE

+0

Btw. Liên kết bạn cung cấp cho HorizontalListView hiện không được chấp nhận –

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