5

Nexus 4 KitKat 4.4 で開発しておりIMMERSIVE MODE、ゲームに追加しようとしています。画面の高さをglViewport正しく設定する必要があります。

以前私が使用した

@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public static int getScreenHeight() {
    if (Main.m_activity == null)
        return -1;
    Display display = Main.m_activity.getWindowManager()
            .getDefaultDisplay();
    int height = -1;

    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
        //width = display.getWidth(); // deprecated
        height = display.getHeight(); // deprecated
    }else{
        Point size = new Point();
        display.getSize(size);
        height = size.y;
    }
    return height;

}

では画面の実際の高さは返されませんIMMERSIVE MODE

だから私はからの値を使い始めました

private static class Renderer implements GLSurfaceView.Renderer {
    public void onSurfaceChanged(GL10 gl, int width, int height) {

アプリの起動時に問題なく動作しました。ホームボタンを押してホーム画面に戻ってからゲームに戻るとonSurfaceChanged、古い間違った値で再度呼び出されます (非没入モードの画面サイズ、小さい、通常)

IMMERSIVE SCREEN のサイズは 800x1280 REGULAR のサイズは 800x1184

通常のサイズを取得して設定するとglViewport、画面の上部に黒い線が表示されます。

PSまたIMMERSIVE MODE、音量ボタンを押すと失われます。

PS2

私は次のメソッドimplを持っています。画面/ウィンドウのサイズ変更を処理するのには役立ちません。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
4

3 に答える 3

4

View.OnSystemUiVisibilityChangeListenerを使用して、没入モードが無効/有効になっているときにコールバックを取得できます。これを使用して、画面の実際の高さを把握できます。

于 2013-12-29T10:14:19.127 に答える
4

Display.getRealSizeを使用して、システム ウィンドウのない画面境界を返します。

于 2013-12-17T15:47:53.093 に答える