23

Trong android, chúng ta có thể trượt một đoạn trên đoạn khác không? Ví dụ, trong hình dưới đây:trượt một đoạn trên đoạn khác trong Android

image 1

Có hai mảnh. Một là màu đỏ, và màu xanh khác. Nếu người dùng nhấn ngón tay của mình vào mũi tên màu đen và kéo nó sang bên phải, đoạn màu đỏ cũng sẽ kéo cùng với nó, do đó bao gồm đoạn màu xanh. Cuối cùng, mảnh màu đỏ bao gồm toàn bộ mảnh màu xanh. Ngoài ra, nếu người dùng nhấc ngón tay của mình lên trước khi mảnh màu đỏ đã được kéo lên ít hơn một nửa của mảnh màu xanh, mảnh màu đỏ sẽ trở lại vị trí ban đầu của nó (và do đó không che phần màu xanh). Tuy nhiên, nếu người dùng không nhấc ngón tay của mình (tức là kéo mũi tên) cho đến khi mảnh màu đỏ bao phủ hơn một nửa đoạn màu xanh, hoặc toàn bộ mảnh màu xanh, thì mảnh màu đỏ sẽ bao trùm toàn bộ mảnh màu xanh.

Ngoài ra, nếu có bất kỳ chế độ xem nào trên đoạn màu đỏ (như, Buttons, EditTexts v.v.), thì chúng cũng sẽ có kích thước lại tương ứng.

Có cách nào để thực hiện việc này không? Nếu có, thì làm thế nào?

+0

Bạn đã giải quyết được sự cố này chưa? – Tushar

+0

Tôi thực sự tò mò liệu bạn có nhận ra điều này bây giờ ...? – Glenn85

+0

Đã khá lâu kể từ khi tôi hỏi câu hỏi này. Tôi không nhớ tôi đã giải quyết nó như thế nào, hay tôi có giải quyết được hay không. – Vaibhav

Trả lời

2

Tôi đoán những gì bạn đang cố gắng làm là một cái gì đó giống như giao diện người dùng Android Market mới nhất? Nơi bạn có thể trượt qua các mảnh hiển thị nội dung khác nhau, phải không?

Nếu đó là nó sau đó tôi khuyên bạn nên có một cái nhìn tại trang web này: http://viewpagerindicator.com/

Đây là một dự án được thực hiện bởi Jake Wharton mà làm những gì bạn đang yêu cầu. Bạn có thể tải xuống mã nguồn của nó để tìm cách tự thực hiện nó hoặc bạn có thể sử dụng nó như một thư viện (nó cũng được giải thích trong trang web).

Để biết thêm thông tin tôi sẽ khuyên bạn dùng một cái nhìn để mảnh vỡ và FragmentActivity trong Android, ở đây đi một liên kết đến một ví dụ sử dụng cả hai mảnh vỡ và FragmentActivity nhưng có rất nhiều trên internet: http://www.e-nature.ch/tech/?p=6

Hy vọng điều này giúp!

+0

Cảm ơn câu trả lời, mặc dù đây không phải là những gì tôi đang tìm kiếm. ViewpagerIndicator cung cấp một chức năng khác. – Vaibhav

1

Tôi không thể nghĩ ra cách dễ dàng hơn ... vì vậy hãy thử thực hiện như sau:

Thử sử dụng FrameLayout. Thêm một LinearLayout màu xanh, sau đó thêm một LinearLayout màu đỏ, ví dụ. Sau đó bố cục màu đỏ sẽ là màu xanh uppon.

Đính kèm trên trình xử lý nghe trên bố cục màu đỏ. Thực hiện một số phép tính đơn giản về tọa độ x và y, mà TouchEvent cung cấp cho bạn, để bố cục chương trình bố cục LayoutParams của bố cục màu đỏ, ví dụ chiều rộng.

Đó là ý tưởng từ đầu của tôi, chưa bao giờ thử nó.

Hy vọng sẽ giúp bạn. Chúc mừng!

+1

Cảm ơn câu trả lời. Tôi đã thử cách tiếp cận này, và nó đã hoạt động tốt. Nhưng nó không đưa ra một cách tiếp cận ** kéo mịn **, tức là màn hình nhấp nháy khi LayoutParams được đặt lại, và bố cục được đo lại và vẽ lại. – Vaibhav

4

Bạn đã xem xét sử dụng hoặc mở rộng SlidingDrawer chưa? Bạn có thể có mảnh màu đỏ làm nội dung của ngăn kéo và mũi tên màu đen làm tay cầm.

2

Tôi cho rằng bạn sẽ sử dụng nhóm chế độ xem tùy chỉnh mở rộng một linearlayout. Các khung nhìn bên trong nên có trọng lượng bố cục để xác định phần của màn hình.

Bạn phải ghi đè các nhóm chế độ xem tùy chỉnh của mình trênLayout và onMeassure, hãy nhớ rằng nhóm xem sẽ gọi meassurements và bố cục của các con của nó, để thay đổi độ mịn.

Hy vọng điều đó sẽ hữu ích.