44

編集:あなたのすべての答えとコメントをありがとう。それについて考えた後、私は質問の核心を「私のゲームが実行できる最小の解像度/比率を決定して制限する方法」に言い換えます。imoは、最小の画面/比率(詳細の欠如)でゲームをプレイできなくなるか、最小の画面/比率でさえサポートすると、他のすべてのエクスペリエンスが大幅に低下するためです。その上、最小の解像度が何であるかさえ知らないか、ldpiを無効にする以外の方法でそれを制限することができます...それでも最小のmdpiについては教えてくれません。結局のところ、私は良い結果を作成する方法についてではなく、完璧な結果を作成する方法について考えています;)。それは不可能だと思います(まだ?)。

注:これは純粋にタブレットではなく電話に関するものです。また、この質問は、Androidレイアウトシステムを使用しないゲームの場合とは異なり、アプリケーションにはあまり関係ありません。

私はいつも、どの決議がやや曖昧であると期待するかの定義を見つけました。ドキュメントのリストを知っています。

さて、私の最初の質問は、このリストが完全であるかどうか、言い換えれば、メーカーが他の解像度またはアスペクト比を使用することを許可されているかどうかです。私の現在のアプローチは、このリストをアスペクト比の観点から表示することです(正確かどうかはわかりませんが、アイデアは得られます)。

  • ldpi:最小アスペクト比4:3
  • mdpi:最小アスペクト比3:2
  • hdpi:最大アスペクト比16:9

4:3 3:2 16:9

したがって、さまざまなデバイスをカバーしたい場合は、最小および最大のアスペクト比を把握し、自動的に最大に成長するようにしながら、最小のレイアウトを設計します。たとえば、すべての密度をサポートしたい場合は、4:3の画面を設計し、16:9に拡大します。ldpiサポートを削除した場合、3:2用に設計します。もちろん、これは、アスペクト比が4:3のmdpiデバイスが存在しないことを前提としているため、最初の質問に戻ります。

私の好ましい解決策は、Androidマーケットで、アプリケーションが処理できるアスペクト比を示すことですが、これは今のところ不可能と思われます。

誰かがより良いアプローチを持っていますか?(電話でのゲームのみを対象としていることに注意してください)

4

6 に答える 6

19

ご質問に直接お答えすることはできませんが、私のアプローチをお伝えしたいと思います。私は数字を一切使わないようにしています。代わりに、パディング、マージン、および相対的なレイアウトを使用して、ビューがどの電話でも正しく表示されるようにします。また、さまざまな方向のビューを作成しないようにするのにも役立ちます。

于 2011-08-19T16:11:52.180 に答える
4

私はその問題に対する明確な答えを見つけました。

3.0より前の最小解像度は未定義です。したがって、3.0以降では、最小解像度を選択し、それに基づいてゲームを設計し、superMなどで言及されているように大きな画面/比率でレイアウトを動的に拡大することが可能になります。

さまざまな画面サイズに合わせてUIを設計すると、各設計に必要なスペースが最小限であることがわかります。したがって、上記の一般化された各画面サイズには、システムによって定義された関連する最小解像度があります。これらの最小サイズは「dp」単位(レイアウトを定義するときに使用する必要があるのと同じ単位)で表されます。これにより、システムは画面密度の変化について心配する必要がなくなります。

  • xlarge画面は少なくとも960dpx720dp
  • 大画面は少なくとも640dpx480dp
  • 通常の画面は少なくとも470dpx320dpです
  • 小さな画面は少なくとも426dpx320dpです

注:これらの最小画面サイズはAndroid 3.0より前では十分に定義されていなかったため、通常と大のデバイスに誤って分類されているデバイスが発生する可能性があります。これらも画面の物理的な解像度に基づいているため、デバイスによって異なる場合があります。たとえば、システムバーを備えた1024x720タブレットは、システムバーで使用されるため、実際にアプリケーションで使用できるスペースが少し少なくなります。

ソース

于 2011-08-24T16:43:04.790 に答える
4

ここで前述したように、私のアプローチでは、パディン、マージン、相対レイアウトなどのデバイスに依存しないコンポーネントを、デバイスに依存しないプクセルと組み合わせて活用することもできます。

率直に言って、私だけではなく、DIP(デバイスに依存しないピクセル)や相対的なレイアウトなどを最大限に活用して、アクティビティのレイアウトファイルを3種類ではなくアクティビティごとに1つに減らしました。 HDPI、MDPI、LDPIの場合。

アスペクト比が本当に気になる場合は、いつでもデバイスのピクセル単位で表示プロパティを呼び出し、それらの数値に基づいて適切なレイアウト計算を行うことができます。これは、最初のアクティビティのonCreateメソッドの最初で呼び出すことができます。

Display display = getWindowManager().getDefaultDisplay(); int displayWidth = display.getWidth(); int displayHeight = display.getHeight();

これにより、ハードウェアsiplayの幅と高さの値がピクセル単位で表示されます。私の意見では、3種類以上のレイアウトを選択する本当の理由は、画像の解像度を十分に鮮明に保つためです。

これらの数値を使用して、特定のウィジェットにロードする解像度画像のタイプを計算する内部ロジックを作成できます。したがって、同じレイアウトを3倍にする手間を省くことができます。

少しわかりにくい説明かもしれませんが、さまざまなデバイスの解像度を克服するための主なことは、次のように多くの作業を行うことです。

  • 相対レイアウト
  • デバイスに依存しないピクセル

XMLレイアウトでDIPを定義することもできるため、すべてのコンポーネントがすべてのタイプのデバイスで同じように見えます。

ばかげた例かもしれませんが、それは私にとってはうまくいきました:-)以下では、textviewのテキストサイズをすべてのデバイスで比較的同じにしようとしました。'TypedValue'クラスを呼び出して、そこで提供される多くのパブリック変数の1つから選択できます。どこでも同じ相対サイズのTextViewを作成したかったので、以下のコードを使用しました。

someTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);

数値は、DIPのサイズの大きさを設定するためのものです。TypedValueは、ディメンションプロパティにINT値を必要とする多くのウィジェットまたはアクティビティコンポーネントで使用できます。それで遊んでください、そしてあなたはそれが人生をずっと楽にするのを見るでしょう:-p

この答えが少し役立つことを願っています

于 2011-08-21T12:26:29.157 に答える
3

アスペクト比の完全なリストはありません。メーカーは、自分が好きな解像度を決めることができます。その上、アスペクト比はピクセル密度と一致しないため、アスペクト比を決定するためにldpi / mdpi/hdpiを使用することはおそらく良い考えではありません。

これに対処するための戦略は、実際にはゲームによって異なります。もちろん、ある程度はすべてを大きく/小さくスケーリングする必要がありますが、明らかにトリッキーな部分は、アスペクト比が異なると異なるエッジです。特定のゲーム(ファーストパーソンシューティングゲーム、サイドスクローラー、タイル張りのトップダウンゲームなど)では、特定のデバイスに利点を与えることを心配しない限り、問題なく別の視野を提供できます。他の人は、背景に伸縮性またはタイル化可能なグラフィックを使用することを検討し、同じ効果的な(スケーリングされた)プレイエリアを維持することができます。

于 2011-08-19T18:28:13.447 に答える
2

あなたはGameDev.stackexchange.comで尋ねることを試みることができます

これはあなたと同様の問題です:さまざまなresoulution電話用のゲームを構築する

于 2011-08-19T17:12:34.693 に答える
0

画面解像度に基づいて、マーケットプレイスでゲームを表示できるデバイスを制限できます: http://developer.android.com/guide/appendix/market-filters.html

私はそれを完全に掘り下げていませんが、残念ながらアスペクト比について言及していないので、動作することがわかっているすべてのものを記入する必要があるかもしれません.

それができない場合は、グラフィックスの見栄えを良くするために必要な最小解像度を設定できます。より小さい比率でゲームを変更したくない場合は、コンソール ゲームで行うように黒い境界線を追加できます。お勧めしませんが、モバイル画面のスペースは貴重なので、プレイエリアを黒いバーで切り刻む場合は、HUD を黒いエリアに移動して、できるだけ多くの画面を引き続き使用できるようにします。

画面サイズのサポートについて詳しくは、http: //developer.android.com/guide/practices/screens_support.htmlをご覧ください。

:D

于 2011-08-24T15:13:09.190 に答える