現在、0,0 で描画すると、ステータス バーが描画を覆います。サーフェスの位置を調整する方法はありますか、またはステータス バーを考慮して描画オフセットを作成する必要がありますか? y=25 から始まるすべてを効果的に描画しますか?
4 に答える
この問題が発生したとき、Surface の上にダミーの View がありました (私は FrameLayout を使用してそれを行いました)。これは ContentView のように大きくなります。だから私が必要としたのは View.getLocationOnScreen(int[])
、どこから描き始めるべきかを知るために電話することだけでした.
サーフェス ビューがステータス バーと重なる理由はわかりませんが (Android のバグのように聞こえます)、おそらく最も簡単なglViewport
方法は、描画に使用するサーフェス ビューの領域を定義するために使用することです。
ステータス バーの高さがわかる場合は、それを glViewport 呼び出しの高さから差し引くだけで、すべての呼び出しがビューポート範囲のすぐ内側にマップされます。
アクティビティに使用するテーマ/スタイルを Android に伝える必要がある場合があります。
glSurfaceView を作成するアクティビティの AndroidManifest.xml に以下を含めます。
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
または、ステータスバーを保持したい場合:
android:theme="@android:style/Theme.Black.NoTitleBar"
テーマとスタイルの詳細は次のとおりです: http://developer.android.com/guide/topics/ui/themes.html
編集: この方法では、glSurfaceView を作成するときに、Android は要求されたレイアウトを考慮に入れる必要があるため、オフセットは必要ありません...