2011-08-01 6 views
1

ゲームを作成してサーフェイスビューを使用しています。 文字と背景などを表すビットマップを読み込みます。Android開発:さまざまなデバイスに合わせてスケールする

しかし、大型デバイスや小型デバイスなどのデバイスに合わせて適切にスケールするにはどうすればよいですか?あなたはサイズを変えるとさせるのにアプリのために必要な各ビットマップのために複数の画像を作成することにより、

答えて

1

あなたは、デバイスの解像度に基づいて計算を要求するために使用できるヘルパーメソッドを実装することができ

このqustionから@MitulNakumの回答に基づいて、このん。

//note that mdpi is the standard 
float getAdjustedDimension(float value){ 
    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    switch(metrics.densityDpi){ 
     case DisplayMetrics.DENSITY_LOW: 
       //api 4 and higher 
       return 0.75 * value; 
     case DisplayMetrics.DENSITY_MEDIUM: 
       //api 4 and higher 
       return value; 
     case DisplayMetrics.DENSITY_HIGH: 
       //api 4 and higher 
       return value * 1.25; 
     case DisplayMetrics.DENSITY_XHIGH 
       //api 9 and higher 
       return value * 2; 
     case DisplayMetrics.DENSITY_TV 
       //api 13 and higher 
       return value * 1.33125; 
    } 
} 
+0

二つの重要な点は、おそらくmetrics.densityDpiをキャッシュする必要があり、これはゲームのために非常に効率的ではありません。 – Gallal

+0

なぜmetrics.density *値を返さないのですか? – MrJre

0

アンドロイドサポートされている方法があるキャンバスを使用してwhhen

//サイモン

注* dpiの文句を言わない仕事、ピクセルのみが動作しますappは、指定された画面密度に使用するものを決定します。これらの画像はdrawable-ldpi、drawable-hdpiなどのフォルダに格納されます。リンクをチェックして閉鎖してください:http://developer.android.com/guide/practices/screens_support.html

あまりメモリにはやらないですが。 :(

1

を取りますAndEngineのカメラを見てくださいあなたが探しているものはすべてそこにあり、オープンソースです!私はこのエンジンをいくつかのゲームやプロトタイプアプリケーションに使用しています。

Source Code

+1

申し訳ありませんが、エンジンにintresstedされていません。 – carefacerz

関連する問題