2010-10-18 38 views
6

Tôi đang thiết kế trò chơi Android đơn giản bằng cách sử dụng surfaceview tương tự như mẫu Lunar Lander do Google cung cấp. Tôi muốn có những thứ khác nhau như highscores, tin nhắn, menu vv bật lên trên màn hình với bề mặt xem vẫn còn trong nền.Lớp phủ bố cục Android trên hình ảnh lướt sóng

Vấn đề là tôi muốn "cửa sổ bật lên" chứa nhiều yếu tố thiết kế như hình ảnh, hộp văn bản v.v. Có cách để tôi có thể tạo bố cục trong XML để thiết kế cửa sổ bật lên mà tôi muốn và sau đó hiển thị trên surfaceview là một đối tượng thay vì phải xây dựng từng phần tử riêng lẻ từng mã một và vẽ tất cả chúng vào khung vẽ?

Tôi muốn làm động các cửa sổ bật lên từ bên cạnh màn hình, vì vậy sẽ tốt nếu tôi thiết kế bố cục trong XML sao cho tất cả đối tượng biết mối quan hệ của chúng với nhau và sau đó tạo bố cục đó làm đối tượng .

Nó đánh tôi như một cái gì đó khá đơn giản nhưng tôi không thể dường như tìm cách để đạt được nó.

Trả lời

3

Cách đơn giản để thực hiện việc này là tạo giao diện cửa sổ bật lên dưới dạng Hoạt động khác. Sau đó, bạn sẽ đưa ra một chủ đề nền trong suốt cho nó, như chủ đề Dialog, trong tệp kê khai của bạn.

Xem các mẫu CustomDialog, Translucent và TranslucientBlur trong Bản trình diễn API. Họ tạo ra những hoạt động như vậy. Thực tế là hoạt động cơ bản nằm trên bề mặt không nên thay đổi bất cứ điều gì.

6

Bạn có thể che phủ các phần tử ở trên cùng của SurfaceView bằng mã hoặc trong bố cục XML của bạn.

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 
<android.view.SurfaceView 
     android:id="@+id/mysurface" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
</android.view.SurfaceView> 
</FrameLayout> 

Và trong Actiivty của bạn:

TextView myText = new TextView(this); 
myText.setText("Something"); 
addContentView(myText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

Không biết về các vấn đề hiệu suất mặc dù.

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