1

設定された画面サイズ (この例では 800x480) で実行する必要がある OpenGL アプリがあります。次のコマンドを使用します。

 this.getHolder().setFixedSize(800, 480)

これを行うには、GLSurfaceView コンストラクターで。これは、画面が大きいデバイスでも、アプリが画面全体を占めることを意味します。

これにより、ビュー onTouchEvent() で getX() & getY() メソッドが (0,0) から (800,480) にスケーリングされた値を返さなくなりました。

実際の画面サイズに基づいた倍率を getX() 値に適用しようとしましたが、それがどうあるべきかを正確に判断できませんでした。

getX() と getY() をどのようにスケーリングしますか? そもそも画面を目的の解像度にスケーリングするために使用する必要がある別の方法はありますか?

4

1 に答える 1

0

OK、ここで自分の質問に答えたと思います。さらに調査した後、次の方法でウィンドウサイズを取得します。

Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();

getX()、getY() の出力をスケーリングするために使用します。明らかに間違った値 display.getWidth() が返す値を無視する必要があります。

于 2012-12-14T14:55:29.700 に答える