1

Androidフォルダにはdrawable-ldpidrawable-hdpiなどがありました。

Blackberryフォルダーでは、画面の解像度の違いを処理するためのフォルダーの命名規則がわかりません。Screen sizes can be placed into two categories, high resolution and low resolution

4

2 に答える 2

3

いいえ、BlackBerry にはそのようなメカニズムはありません (Java API について話しているので、WebWorks や BB10 ではどうなるかわかりません)。

ただし、必ず独自のメカニズムを作成する必要があります。ほとんどすべてのプロジェクトでさまざまな画面サイズを管理する必要があるため、コーディングする価値があります。私は現在、いくつかのプロジェクトでそれを行っています。アイデアは、res/img パッケージ内にサブパッケージを作成することです (たとえば、320 ピクセルの画面幅の res/img/320 など)。次に、Android の場合と同様に、各サブパッケージに正しい画像を貼り付けます。最後にImageManager、アプリ内の他のすべてのクラスからのすべての画像リクエストを処理することを主な目的とするクラスをコーディングします。

  • アプリの起動時 (または、画面の回転を許可する場合はビットマップ要求ごと) に、現在の画面解像度の呼び出しを取得します。Display.getWidth();
  • 画像が要求さImageManagerれると、適切な名前の res/img 内のフォルダーを検索します。

    Inputstream is = ImageManager.class.getResourceAsStream("/img/<current resolution>/someimage.png");

  • そのようなディレクトリが存在する場合は、イメージを取得します。

        byte[] rawFileData = IOUtilities.streamToBytes(is);
        EncodedImage encodedImage = EncodedImage.createEncodedImage(rawFileData, 0, rawFileData.length);
    

現在の画面解像度のディレクトリがない場合は、次のことができます。

  1. /img/common などのフォールバック ディレクトリを提供し、縮小しても品質が低下しないように十分な大きさの画像を用意します。次に、通常どおり画像を取得し、現在の解像度に比例してスケーリングします。OS 5 のクラスに追加された新しいメソッドはBitmap、さまざまなスケーリング オプションと優れたパフォーマンスにより、これをすぐに実行できます。
  2. カスタム ディレクトリが存在する最も近い解像度の画像を取得します (つまり、現在の解像度が 360 で、/img/360 が存在しない場合は、/img/320 から画像を取得します)。

最後に、プロのヒント: ファサードをImageManagerより短いクラス名とメソッド名でコーディングして、それをシングルトンにすることができます。そうすれば、次のように入力できます。

R.drawable("someimage.png");

これは Android の構文によく似ています。

于 2012-07-04T08:01:00.600 に答える
0

blackberry では、Android のように低解像度画像と高解像度画像を分けて保存するオプションがありません。その代わりに、リソース フォルダーの下にカスタム フォルダーを作成し、必要に応じて画像を単一または複数のフォルダーに保持する必要があります。

于 2012-07-04T07:14:37.333 に答える