Đối với trò chơi của tôi, tôi đang nghĩ đến việc vẽ các yếu tố giao diện người dùng (TextView để hiển thị thời gian trôi qua, Buttons cho tạm dừng/khởi động lại trò chơi) trên đầu trang của GLSurfaceView
tôi sử dụng RelativeLayout ...Vẽ Android UI trên đầu trang của GLSurfaceView
Till Bây giờ, tôi đã vẽ tất cả các yếu tố giao diện người dùng trực tiếp lên SurfaceView nhưng xem xét các tùy chọn có sẵn từ giao diện người dùng Android (như thay đổi kiểu chữ và màu), tôi đã quyết định sử dụng nó.
Câu hỏi:
- Có thực hành tốt để vẽ các yếu tố giao diện người dùng trên đầu trang của
GLSurfaceView
hoặc là nó tốt hơn để vẽ tất cả những thứ UI bản thân mình trực tiếp đếnGLSurfaceView
? - Tôi sẽ cập nhật nội dung của các thành phần giao diện người dùng (Nói
TextView
) thường xuyên (đối với mỗi 16 ms) bằng cách sử dụng phương pháprunOnUiThread()
... Điều này có tệ không? - Trò chơi của tôi có dễ bị ảnh hưởng bởi Force Closes không?
Đây là mã java thử nghiệm mà tôi đang sử dụng để thiết lập RelativeLayout ... glView
là phiên bản GLSurfaceView
.
rl = new RelativeLayout(this);
rl.addView(glView);
tv = new TextView(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_TOP);
tv.setLayoutParams(lp);
tv.setText("FPS: 0");
tv.setBackgroundColor(0x4060ff70);
rl.addView(tv);
setContentView(rl);
Có ... Làm cho tinh thần .. bạn sẽ xem xét xem câu hỏi khác tôi đã đăng một lúc trước? http://stackoverflow.com/questions/14522715/passing-instructions-from-ui-thread-to-rendering-thread-glsurfaceview – BLOB