2016-02-11 26 views
5

Tôi muốn tạo vùng chứa Android tùy chỉnh. Tôi có thể dễ dàng thêm và xóa đối tượng ở đâu. Vùng chứa sẽ đặt các đối tượng bên trong hình lục giác. Thứ tự các vị trí đối tượng thực sự quan trọng và được hiển thị trong hình bên dưới. Các đối tượng trong bộ điều hợp này là ImageViews có thể nhấp (hình tròn). Thậm chí có thể tạo ra một cái gì đó như thế này cho Android?Vùng chứa tùy chỉnh Android (lục giác) withe adapter

Hexagon-Circle

Tôi biết rằng có những câu hỏi tương tự như tôi, nhưng không có thậm chí gần với những gì tôi muốn đạt được.

Có lẽ ngày càng có nhiều người tìm kiếm thêm các vùng chứa tùy chỉnh giống như thứ tôi đang cố gắng thực hiện. Không phải là một tiêu chuẩn như trong các ứng dụng khác: GridsView, ListView vv

Những gì tôi đã thực hiện

tôi quyết định sử dụng RecyclerView và tùy chỉnh RecyclerView.LayoutManagers. Cũng viết một thuật toán để xác định vị trí của ImageViews. Thật không may là tôi không quen thuộc với LayoutManager và không chắc chắn làm thế nào tôi nên xác định những nơi sử dụng nó Giao diện.

RecyclerView

Đây là thuật toán:

List<Object> list; 
int nuberOfElements = list.size(); 
int layerNr = 0; 
int radius = 0; 
int angle = 0; 

//handle first middel element postion(0,0) 
nuberOfPlaceElements --; 
radius += r; 

for(layerNr=1; nuberOfElements > 0; layerNr ++){ 
    for(int elementInLayer = 0; elementInLayer < layerNr * 6; elemnetInLayer ++){ 
     //layerNr *6 -> define how many elements in layer 

     angle += 360/layerNr * 6 
     //handle the postion of elemnts in Layer 

     nuberOfElements--; 
    } 
    radius += r; 
    angle = 0; 
} 

Hexagon-Order

Trả lời

1

giải pháp tốt nhất là tạo ra một bố cục tùy chỉnh (http://lucasr.org/2014/05/12/custom-layouts-on-android/) nhưng đó cũng là cách đắt nhất (chi phí về thời gian để thực hiện) ...

thay thế bạn có thể tạo chế độ xem tùy chỉnh và vẽ hình ảnh trực tiếp e (http://developer.android.com/training/custom-views/custom-drawing.html)

tất cả các bạn đã bao giờ muốn biết về hex-bản đồ: http://www.redblobgames.com/grids/hexagons/

tại sao bố trí tốt hơn so với một cái nhìn vẽ tùy chỉnh? nó có thể được đóng gói trong một thư viện và sử dụng cho bất kỳ ứng dụng khác trong khi một cái nhìn vẽ tùy chỉnh là khá ràng buộc để ứng dụng ...

+0

Thx :) Tôi sẽ xem xét giải pháp đó. Thật khó để thêm bộ điều hợp vào customView/customDrawing để tôi có thể dễ dàng xóa, thêm các mục? – Minis

+0

Giới thiệu về chế độ xem bản vẽ tùy chỉnh. Có thể vẽ ImageView? Ví dụ được đặt trong Danh sách? – Minis

+1

bạn có thể tạo chế độ xem bất cứ lúc nào ...và một khi đã tạo ra nó cũng khá đơn giản để vẽ chế độ xem đó ... và mặc dù bạn có thể cung cấp một mô hình bố cục (không phải là một phân lớp thực của view/viewgroup, chỉ là một mô hình pojo đơn giản). rất dễ dàng để vẽ trực tiếp hình ảnh) –

1

bạn có thể kiểm tra thư viện này mà thực hiện chính xác những gì bạn đang yêu cầu https://github.com/xresco/Hexagon-Recyclerview

Đó là siêu đơn giản để sử dụng. Thay vì sử dụng recyclerview mặc định (hoặc listview) chỉ cần sử dụng

<com.abed.hexagonrecyclerview.view.HexagonRecyclerView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/rvItems" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_centerVertical="true" app:items_count_in_row="3" app:items_horizontal_spacing="20dp" app:items_vertical_spacing="20dp" app:orientation="horizontal" />

bạn có thể tùy chỉnh nó bằng cách sử dụng bốn thông số sau:

ứng dụng: items_count_in_row ứng dụng: items_horizontal_spacing ứng dụng: items_vertical_spacing ứng dụng: định hướng

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