최근의 책 (모바일 게임 및 그래픽 개발을위한 OpenGL ES 알아보기)의 예제와 기본 액티비티에 프로그래밍 방식으로 새 레이아웃 (설정 레이아웃이라고 부름)을 추가하고 다음을 제안합니다.GLSurfaceView에 xml 레이아웃을 중첩하는 가장 좋은 방법은 무엇입니까?
LayoutInflater settingsInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View settingsLayoutView = settingsInflater.inflate(R.layout.mySettingsLayout,settingsLayout,false);
settingsLayout.addView(settingsLayoutView);
addContentView(settingsLayout,settingsLayoutParams);
잘 작동하지만 내 작업 표시 줄 메뉴 항목 중 하나의 콜백에 추가 했으므로 뒤로 단추를 사용하면이보기를 제거 할 수 있습니다. 지금까지 두통이 많이 발생했습니다.
한편 동적 뷰 (백 스택 등에 추가 가능)를 구현하는 가장 자연스러운 방법은 조각을 사용하는 것입니다. 그러나 조각은 레이아웃에 속해야하며, 현재 내 코드는 레이아웃을 전혀 사용하지 않고 GLSurfaceView를 내 주요 활동의 콘텐츠보기로 직접 할당합니다. GLSurfaceView는 View의 서브 클래스이기 때문에 (View Group이 아님), 조각과 같은 자식을 생성하는 데 사용할 수 없습니다.
이 책의 저자는이 접근법이 "세련된"것으로 주장하지만 GLSurfaceView를 콘텐츠보기로 직접 할당 할 다른 이유는 제시하지 않습니다. 알고 있어야 할 성능 문제가 있습니까? 또는 내 GLSurfaceView와 이후 생성 된 뷰가 모두 속한 "마스터"레이아웃을 만드는 것이 "세련된"것인가?
버튼, 텍스트 상자 등을 내 GLSurfaceView 위에 동적으로 나타나고 사라지게하는 좀 더 자연스러운 방법이 있습니까?
지금은 "호스트"뷰 그룹으로 별도의 레이아웃을 만든 다음 해당 레이아웃 내부에 내 GLSurfaceView가 setContentView를 가져 오는 조각이 있습니다. 그런 다음 다른 조각이 프로그래밍 방식으로 만들어집니다. 그게 효과가있는 것 같지만, 그것이 성능면에서 가장 좋은 방법인지 알고 싶습니다. – djphd