2010-10-26 13 views
5

Tôi hoàn toàn mới lập trình Android (chỉ cần thực hiện một số hướng dẫn/đọc hướng dẫn dev, v.v.) và như mọi người mới, tôi muốn thực hiện một trò chơi vô ích :-).Kết hợp SurfaceView với các Chế độ xem khác như TextView và Buttons

Hiện tại tôi đang đấu tranh với bố cục các chế độ xem khác nhau. Tương tự như ví dụ tôi đã tạo một lớp mở rộng SurfaceView và đặt nó vào một FrameLayout. Xung quanh số SurfaceView Tôi muốn có các Chế độ xem khác như Buttons & TextViews. Something như thế này:

----------------------------------------------- 
| TextView | SurfaceView   | TextView | 
|   |      |   | 
------------      ------------ 
|   |      | TextView | 
|   |      |   | 
|   |      ------------ 
|   |      | TextView | 
|   |      |   | 
|   |      ------------ 
|   |      |   | 
|   |      |   | 
----------------------------------------------- 
| Button        Button | 
----------------------------------------------- 

tôi đã quản lý để làm một cái gì đó như thế này với một FrameLayoutRelativeLayouts (gắn bó với TextViews ở các cạnh của màn hình) nhưng tôi muốn kiểm soát tốt hơn kích thước của SurfaceView vì nó phải là bội số chiều rộng và chiều cao của đối tượng tôi sẽ vẽ trong đó. Tôi đã thử đặt layout_widthlayout_height thành một số giá trị dp nhưng khi tôi bắt đầu vẽ ở 0,0 nó vẫn ở góc trên cùng bên trái (trong đó TextView là ..).

Vì vậy, cách tốt nhất để đạt được bố cục như trên là gì? Sử dụng bố cục nào? Hoặc tốt hơn tôi nên vẽ văn bản của tôi bên trong hàm draw() của số SurfaceView thay thế?

+0

Bạn nên đăng xml của mình để cung cấp cho mọi người một đầu mối tốt hơn về vấn đề có thể xảy ra. – MikeIsrael

Trả lời

6

Bố cục là cách phù hợp để kết hợp nội dung OpengGL với các nút, nhãn và các loại đối tượng chế độ xem khác. Bạn có thể kết hợp các bố trí bên trong các bố trí khác ... để bạn có thể xây dựng từng bước màn hình của mình kết hợp Bố cục tuyến tính hoặc bất kỳ thứ gì bạn muốn.

Ví dụ, bạn có sử dụng một cách bố trí tương đối để thiết lập các nút (b1, b2) và phần còn lại của màn hình:

+-----------+ 
| Zone 1 | 
+-----+-----+ 
| b1 | b2 | 
+-----+-----+ 

Sau đó bên trong Khu 1, bạn có thể sử dụng một ngang tuyến tính Layout cho 3 cột chính

+----+----+----+ 
| c1 | c2 | c3 | 
+----+----+----+ 

Bên trong c2 bạn có thể đặt SurfaceView, và trong c1 nhãn văn bản

Bên c3 sẽ là một bố cục mới dọc tuyến tính để hiển thị dòng chữ la bels.

+----+ 
| t1 | 
+----+ 
| t2 | 
+----+ 
| t3 | 
+----+