2012-02-27 9 views
1

320x480,800x480,800x480,800x600 1024x600、1024x768、1024x800など、さまざまな解像度で描画可能なリソースが必要です。それはゲームであり、ビットマップのスケーリングは受け入れられないので、非常に敏感です。 dpiに依存するフォルダや画面サイズの組み合わせ(非推奨ですが、同じ解像度と差分dpiの大画面で描画可能に設定する方法はありません)は不可能です。 1024x600と1024x768のグラフィックスを区別する方法は?解像度が異なるとグラフィックスが異なります。

自動ピッキングリソースの使用の仕組みを止め、資産から手動ロードに切り替えるのはとても悲しいです。 アイデア?

+0

実行時に解像度を取得し、異なる名前のグラフィックスを使用することができます。そうすれば、ユーザーが実行している解像度に合わせて正しいグラフィックスを呼び出すことができます。 –

+0

解決策ではなく回避策です。私は、異なる解像度の異なるグラフィックスだけを必要としますが、同じレイアウトでは、たとえばbackground = "@ drawable/background"を設定しますが、異なる名前がこのスキームを壊します。 : – SaTom

答えて

1

私は通常ドロウアブルのために4つのリソースフォルダを使用しています:

  1. 描画可能MDPI 480X800用
  2. 描画可能-hdpiと600x1024、768×1024などのための480x854
  3. 描画可能な大hdpi 320×480のために
  4. にこれらは私の心の中だけで十分です800x1280

ための描画可能XLARGE-MDPI。また、たとえば800x480と854x480の画面サイズのデバイスでは、描画可能なリソースが異なることを心配する必要はありません。画面の端に27ピクセルのオフセットを指定してゲームを画面上に配置することができます。お役に立てれば。

+0

with 1024xXXX多くの問題がmdpiとして認識され、そのうちのいくつかはhdpiとして認識されます。現在はdrawable-large-nodpiとxlarge-nodpiを使用していますが、特定の解像度を選択する方法はありません。 – SaTom

+1

@SaTomとにかく、すべての解決策をカバーすることはほとんど不可能なので、最も一般的なもので作業する必要があります。 – Egor

+0

解決方法私は指定されたプラットフォームの約95%をカバーしているので、すべての解決策をサポートする必要はありません – SaTom

1

あなたはピクセル完璧なフィット感をしたい場合は、常に簡単な方法を経由して、実行時に背景を読み込むことができます:あなたは、ディスプレイの解像度を取得した後、あなたがsetBackgroundDrawableを介して適切な背景を適用することができます

private void setBackgroundImage() { 
    DisplayMetrics dm = getResources().getDisplayMetrics(); 
    int screenWidth = dm.widthPixels; 
    int screenHeight = dm.heightPixels; 

    // TODO: Conditional Structure to apply the right drawable 
    // ressource to be applied in the background 

} 

方法。

+0

しかし、ロジックから完全に独立したUIを作成することはとても良いことでした。しかし、このハックでは、Eclipseのレイアウトのプレビューが緩んでしまいます。通常XMLエディタでXMLを書きますが、プレビューはUIビルで多く役立ちます。 – SaTom