2011-01-13 9 views
0

私は単純な2Dパズルゲームを持っていますが、私はそれを拡張ビューで作成しました。デバイスの誰かに表示さdoesntのゲームの私の半分は私が置か問題は、さまざまなグラフィックがこのAndroidゲームプログラミング

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ring); 
canvas.drawBitmap(bitmap, 45, 250, paint); 
canvas.drawBitmap(bitmap, 135, 250, paint); 
canvas.drawBitmap(bitmap, 225, 250, paint); 

のようなオブジェクトをいただきました!また、しかし役に立たないが、誰が私を伝えることができることをしようとした表面ビューを使用するように私に言ったつまり私は、静的な値を使用しましたこれは正しい方法ではないのか、私は間違っているのでしょうか?

答えて

1

は、画面の高さと幅を取得します。

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int screenHeight = dm.heightPixels; 
int screenWidth = dm.widthPixels; 

は、次に、これらの値を使用して、すべてを拡張、それが適切にスケールするように...あなたはおそらく、ビットマップのすべての頂点を指定する必要があります。

+0

あなたは私たちがcssで行うようにperecentageでそれを変換することを意味します – ingsaurabh

-1

もちろん動作しません。ゲームが複数の画面サイズで再生可能である必要がある場合は、画面が特定のサイズであると想定することはできません。

+0

どのようにすればよいでしょうか – ingsaurabh

+0

はい、できます。それはQのポイントです。つまり、実際の寸法とスケールを照会したあとの例を640x480と仮定します。 – RichieHH

+0

@ RichieHH:すべての画面のアスペクト比が同じではありません。単にゲームを再スケーリングすると、ゲームを比例させずに伸ばしたり、ゲームの周りに黒い境界線を表示したりします。さらに、高密度Retinaディスプレイが一般的になると、ユーザーの中には小さすぎるボタンが得られ、他のユーザーは同じボタンをあまりにも大きくすることがあります。どちらも良いことではありません。複数の画面サイズを処理するには、流動的または反応的な設計手法で画面を設計する必要があります。 [Androidフレームワークはこれを広範にサポートしています](https://developer.android.com/training/multiscreen/index.html)。 –

0

私はあなたが最初にウィンドウの高さと幅を取得しなければならないかもしれないと思うし、携帯電話の寸法に応じて、それを設定する必要があります。

1

画面サイズを320x480と仮定している場合は、マニフェストに<supports-screens android:anyDensity="false">を設定する必要があります。デフォルトはtrue ... falseに設定すると、アンドロイドはグラフィカルな出力を実際の画面に拡大縮小します。

もちろん、この自動縮小は完全ではありません。理想的には、画面サイズを想定してはいけません。

+0

これを行うにはベストプラクティスが間違っている場合は、他のすべての画面サイズをサポートしたい – ingsaurabh

+0

まず自動サイズ調整を試してみてください。あなたのゲームがどのように見えるかは、*完全に*依存します。見た目が悪ければ、ゲームコードを変更する必要があります。しかし、あなたはそれで逃げるかもしれません。 –

+0

あなたの答えはありがたいですが、私はデバイスの高さと幅を使って座標をスケーリングしていましたが、幸せではないのですが、私の同僚が既にハードコーディングされた値を使ってこれを行っているので、彼は正確にどのように起こるのかわかりません – ingsaurabh

1

AndEngineBadlogic Gamesなどのゲームエンジンを使用すると、このようなことに気にする必要はありません。

+0

あなた自身のエンジンを宣伝するときは、事実を言及するのが慣例です;)しかし、その男はそれを自分でやろうとします。 – RichieHH

関連する問題