2010-10-26 7 views
5

Jestem całkowicie nowym programistą dla Androida (po prostu zrobiłem kilka tutoriali/przeczytałem przewodniki dev itp.) I jak każdy nowicjusz chcę zrobić bezużyteczną grę :-).Łączenie SurfaceView z innymi widokami, takimi jak TextView i przyciski

Obecnie zmagam się z układem różnych widoków. Podobnie do przykładu stworzyłem klasę, która rozszerza SurfaceView i umieszcza ją w FrameLayout. Wokół tego SurfaceView chcę mieć inne widoki, takie jak Buttons & TextViews. coś takiego:

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

udało mi się zrobić coś takiego z FrameLayout i RelativeLayouts (przyklejeniem TextViews na krawędziach ekranu), ale chciałbym, aby lepiej kontrolować wielkość SurfaceView ponieważ powinien być wielokrotnością szerokości i wysokości obiektu (ów), który będę w nim rysować. Próbowałem ustawić wartości layout_width i layout_height na niektóre wartości dp, ale kiedy zaczynam malować na poziomie 0,0, wciąż znajduje się w samym lewym górnym rogu (gdzie TextView to ...).

Jaka jest najlepsza praktyka, aby uzyskać układ jak powyżej? Jaki układ? Czy powinienem zamiast tego narysować tekst wewnątrz funkcji draw() mojego ?

+0

Powinieneś opublikować swój xml, aby dać ludziom lepszą wskazówkę, że problem może dotyczyć. – MikeIsrael

Odpowiedz

6

Układy są właściwym sposobem łączenia zawartości OpengGL z przyciskami, etykietami i innymi typami obiektów widoku. Możesz łączyć układy w innych układach ... aby budować ekran krok po kroku, łącząc układy liniowe lub cokolwiek innego.

Na przykład, można użyć układu w stosunku do konfiguracji przycisków (B1, B2) i resztę ekranu:

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

Następnie wewnątrz strefy 1, można użyć układ poziomy liniowej dla 3 główne kolumny

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

Wewnątrz c2 można umieścić SurfaceView, aw C1 etykiety tekstowej

Wewnątrz C3 będzie nowy układ pionowy liniowy aby wyświetlić tekst la Bels.

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