1

キンドルファイア用のゲームを開発していますが、ゲームは常にバーを非表示にして実行されます。

ユーザーが一時停止メニューに入ったときにのみバーが表示されます。バーがゲームの上に表示されるようにしたいだけです。

しかし、バーが表示されると GlSurfaceView.getHeight() が 600 から 580 に変更され、ゲームのサイズが変更されるようですが、その動作は望ましくありません。

ゲームの上にバーが表示され、ゲームが動かないようにしたいだけです。すでに GlSurfaceView.setMinimumHeight(600); で試しました。

しかし、kindleは単にそれを無視します。

これは私のゲームが常に実行される方法です:ここに画像の説明を入力

そして、バーをアクティブにすると、これが起こります:

ここに画像の説明を入力

これの代わりに :

ここに画像の説明を入力

これを回避する方法を知っていますか?

ありがとう!

GlSurfaceView を作成するには、次のようにします。

OnCreate() {

s_activity.m_view = new GameGLSurfaceView(s_activity.getApplication(), true, pixelSize,depthSize, stencilSize);

}

public GameGLSurfaceView(Context context, boolean translucent,int pixelSize, int depth, int stencil) 
{
super(context);
mRenderer = new GameRenderer(context, this);
setRenderer(mRenderer);

}

バーを非表示にして表示するには、この関数を使用します

private static final int AMAZON_FLAG_NOSOFTKEYS = 0x80000000;
private static final int FLAG_SUPER_FULLSCREEN = AMAZON_FLAG_NOSOFTKEYS | WindowManager.LayoutParams.FLAG_FULLSCREEN;

public static void toggleKindleBar(final int toDo)
{   
    if( s_activity != null)
        s_activity.runOnUiThread(new Runnable()
        {
            public void run()
            {
                s_activity.getWindow().clearFlags( toDo!=1? WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN : FLAG_SUPER_FULLSCREEN);
                s_activity.getWindow().addFlags( toDo!=1? FLAG_SUPER_FULLSCREEN:WindowManager.LayoutParams.FLAG_FULLSCREEN);

            }
        });
}
4

1 に答える 1

1

可能な解決策:

  1. アクティビティのonCreate()メソッドでこれを試してください。

    getWindow()。setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS、WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

    私の経験によると、このコードの実行中に使用すると、一部のビューでキンドルファイアに奇妙な問題が発生することに注意してください。したがって、機能する場合でも、広範なテストを行ってください。

  2. マニフェストにconfigChangesのフラグを設定してみてください。ただし、テストを行っておらず、キンドルファイアはもうありません。

于 2012-05-29T21:19:09.403 に答える