2015-05-23 13 views
19

Tôi đang cố gắng tối ưu hóa danh sách của mình, khi tôi đi vào tùy chọn nhà phát triển và bật "Hiển thị giới hạn bố cục" Tôi nhận thấy rằng ứng dụng Gmail có cấu trúc phân cấp xem hoàn toàn bằng phẳng? Làm thế nào là ma thuật đen này đạt được?Ứng dụng Gmail đạt được cấu trúc phân cấp chế độ xem phẳng như thế nào?

enter image description here

enter image description here

+1

Lượt xem tùy chỉnh, rất có thể. – CommonsWare

+0

Tôi muốn nghe về ma thuật đen này quá –

+0

Điều đó có nghĩa là họ đang vẽ toàn bộ danh sách bên trong phương thức onDraw cho chế độ xem tùy chỉnh? Đối với một cái gì đó giống như ngôi sao hoặc người dùng hình ảnh như thế nào mà sẽ đạt được? Cũng trong ứng dụng gmail, nhấp vào hình đại diện tạo hiệu ứng lật, họ có đang vẽ hoạt ảnh đó không? Hình ảnh ngôi sao có yêu cầu Đường dẫn tùy chỉnh không? Đây là ma thuật hoàn chỉnh đối với tôi. –

Trả lời

1

Vâng, tôi có thể là sai về một vài chi tiết, nhưng họ đang sử dụng một giao diện tùy chỉnh. Một widget, nếu bạn muốn.

Thực tế, bạn có một lớp mở rộng thứ gì đó, có thể là Chế độ xem, LinearLayout hoặc RelativeLayout, hơn bạn lập trình thêm nội dung bạn cần vào đó và đảm bảo bạn có phương pháp để truy cập nội dung từ bên ngoài khi bạn tạo một "thingy" mới, bạn sẽ có thể cung cấp cho nó bất kỳ văn bản hoặc hình ảnh nào bạn muốn.

Trong trường hợp của bạn, những gì tôi sẽ làm là một tiện ích mở rộng LinearLayout và tôi sẽ thêm vào đó hình ảnh, 3 textViews (tên, chủ đề, thư thực) và một TextView khác cho ngày đó. Nếu bạn muốn ngôi sao nữa, đó sẽ là một điều nữa được thêm vào, một ImageView. Bạn di chuyển chúng xung quanh bất kỳ cách nào bạn muốn, và đó là khá nhiều nó.

Nếu bạn muốn một số mã cho điều đó, hãy cho tôi biết, tôi sẽ cung cấp cho bạn một số chi tiết khác nếu bạn thực sự cần.

+0

Nhưng sẽ không thêm hình ảnh và 3 bản xem trước văn bản vẫn thêm các mục vào phân cấp chế độ xem? Tôi không hiểu tại sao những lượt xem đó không có bố cục. Tôi đoán văn bản phải được thực hiện với một phương thức canvas.drawText(), tôi chỉ không hiểu làm thế nào họ có thể có một phương thức ondraw tùy chỉnh mà cũng làm sinh động các avatar? Tôi sẽ thử đề xuất của bạn để xem liệu thực tế đó có xóa các layoutbounds hay không. –

+0

Vâng, tôi không chắc chắn về điều này, bạn muốn kiểm tra lại điều này, nhưng tôi khá chắc chắn hệ thống phân cấp nhìn thấy nó như là một điều. Ví dụ nếu bạn mở rộng lớp của bạn như là một LinearLayout, nó nhìn thấy nó như là một LinearLayout. – Vlad

+0

Có thể đó là FrameLayout hoặc RelativeLayout với chế độ xem trên cùng (thứ tự z) bao gồm chiều cao/chiều rộng đầy đủ không? Có lẽ chế độ xem trên cùng này bỏ qua hoặc chuyển sang các sự kiện nhấp để xử lý nhấp chuột "sao"? Chỉ là một dự đoán hoang dã. – hungryghost

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