2012-12-05 27 views
5

Tôi đang cố gắng triển khai Carousel vô hạn bằng cách sử dụng thành phần ViewPager. Tôi dựa trên cái được tạo bởi Antonyt nhưng có sự cố khi sử dụng ít hơn 4 chế độ xem. Khi xem đã có sẵn. Phải là một cách để lừa Viewpager để vẽ cùng một chế độ xem/trang ở những vị trí khác nhau.ViewPager Circular với ít hơn 4 lượt xem

Trả lời

0

Giải pháp là sử dụng cùng một chế độ xem con trong ViewPager. Và để làm điều đó mà không có cùng một đứa trẻ đã được chỉ định cho cha mẹ là sử dụng một ProxyView với cái nhìn thực sự bên trong. Mở rộng Fake View từ ViewGroup và ghi đè lên phương thức Draw sẽ thực hiện thủ thuật!

1

Tôi đã gặp sự cố tương tự, không thể tự tìm ra giải pháp. Nhưng tôi đoán nó là không thể làm bằng cách sử dụng chỉ 1-4 lượt xem. Vấn đề là tất cả các khung nhìn (cho 1-4 ảnh lặp lại) sẽ được khởi tạo cùng một lúc (hoặc ít nhất trong một khoảng thời gian rất ngắn) điều này ảnh hưởng đến quá trình tải ảnh vì tải trước chưa hoàn thành, vì vậy một trả về một cái nhìn hư hỏng. Bạn có thể xử lý một cái gì đó như thế này mặc dù.

1) ngay sau khi instantiation, sử dụng bộ xử lý với sự chậm trễ của 100-200ms để lướt qua xem setCurrentItem() một lần nữa và một lần nữa (khoảng 10 lần) trong hai hướng, cách này bản gốc 4 sẽ được ra khỏi phạm vi (nếu bạn đã tắt giới hạn trang màn hình, tôi hy vọng bạn có thể có được bản chất của mã của bạn) và sẽ được tạo từng cái một sau này.

2) Sử dụng đối tượng nhiều đệm,

1 hình ảnh-8 đệm

2 hình ảnh-4 bộ đệm cho mỗi

3 hình ảnh 2 bộ đệm cho mỗi ... một cái gì đó như thế này .

không phải là giải pháp lý tưởng mà cả hai đều hoạt động cho tôi nhưng. Tôi cũng muốn biết những gì bạn đã thử.

+0

Xin chào Shakti, tôi không nhận được giải pháp của bạn. Bạn có thể chia sẻ mã của bạn không? – Dayerman

+0

Việc triển khai hóa ra là phức tạp đối với tôi với mã phân tán. Ý tưởng cơ bản là làm cho chúng khởi tạo từng cái một thay vì tất cả cùng một lúc. Hãy thử somehting để làm cho điều đó xảy ra. Trong trường hợp bộ đệm, bạn phải tạo nhiều lần xem hình ảnh với cùng một nội dung. – Shakti

+0

Vấn đề là tôi cần phải sử dụng cùng một chế độ xem ở những nơi khác nhau, vì vậy tôi không thể khởi tạo nhiều lần như sẽ là một trường hợp khác. Vì vậy, là một vấn đề của một đứa trẻ đã được đính kèm với một phụ huynh. Giải pháp có thể thu hút lượt xem ở 2 nơi. Đó là đi sâu hơn trong cấu trúc của ViewPager. – Dayerman

-1

Hãy thử mẹo sau mà tôi đã sử dụng thành công để tạo một (giả) vô hạn ListView.

Trong phương pháp của bộ điều hợp getCount(), trả về Số nguyên.MAX_VALUE.

Sau đó, trong các bộ chuyển đổi instantiateItem() hoặc destroyItem(), Sử dụng position % datasource.size()

Thủ thuật này được lấy từ HERE.

+0

Tại sao lại là downvote? Điều này làm việc khá tốt cho Danh sách ... –

+0

Hi Vinay, tôi đã sử dụng giải pháp đó. Vấn đề là làm cho nó hoạt động với ít hơn 4 lượt xem. – Dayerman

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