2

このような静的関数を作成しました。

public static Bitmap Bitmap(String path) {
    Bitmap bitmap = Bitmap
            .getBitmapResource(Display.getWidth() + "/" + path);
    System.out.println(Display.getWidth() + "" + path);
    return bitmap;
}

しかし、私がこのように電話したとき、

private Bitmap download = Config_GlobalFunction.Bitmap("btn_download.png");

出力は私に与えましたFRIDG could not find 320/btn_download.png

私のresフォルダには、あるフォルダがあり、imgその中には、、、、、、およびフォルダのimg6つの異なるフォルダがあります。160240320360480640

に基づいて正しいフォルダの画像を呼び出すにはどうすればよいDisplay.getWidth()ですか?

4

3 に答える 3

5

フォルダの下にフォルダ階層を設定することできますが、リソースを作成するためではなく、を/res使用する必要があります。getClass().getResourceAsStream(path)Bitmap.getBitmapResource()

この例では、パスからビットマップを作成します/res/img/hi_res/ui/action_arrow.png

String imagePath = "/img/hi_res/ui/action_arrow.png"; 
InputStream is = getClass().getResourceAsStream(imagePath);
byte[] imageBytes = IOUtilities.streamToBytes(is);
Bitmap b = Bitmap.createBitmapFromBytes(imageBytes, 0, imageBytes.length, 1);

少し手間がかかりますが、何百もの画像を1つのフォルダーにまとめるのではなく、優れたフォルダー構造を作成できることを意味します。

于 2012-07-18T22:13:26.950 に答える
2

私は以前にこれに問題がありました。 BlackBerryアプリは、サブフォルダー内のリソースファイルを処理するように適切に設定されていないようです。 つまり、リソースをフォルダーに保存できますが、アプリ(.codファイル)にバンドルすると、基本的にすべて同じフォルダーにダンプされます。

ご覧のとおり、同じ名前のリソースが複数ある場合(ただし、フォルダーが異なる場合)、問題が発生します。

以前はNetbeansIDEを使用してBlackBerryアプリを構築していましたが、Netbeans BlackBerryプラグインを使用すると、これを処理できるように見えました。しかし、RIM JDEまたはEclipseプラグインでは、そうではありません。おそらくant、ツールセットの背後にあるビルドスクリプトの何かですか?

とにかく、私はあなたがあなたが持っているであろうAndroidに似た何かをしたいと思っていることを知っています:

  • res / drawable-hdpi / icon.png
  • res / drawable-mdpi / icon.png
  • res / drawable-xhdpi / icon.png

画面サイズ/解像度に基づいてicon.pngの正しいバージョンを選択します。良い考えです。

ただし、簡単にするために、フォルダではなく、リソース名にプレフィックスを使用するようにシステムを変更することをお勧めします。それは苦痛だと私は知っていますが、BlackBerryはそれをうまく処理しているようです。

だから、あなたの画像を呼び出すだけです:

  • res / img / 320_btn_download.png
  • res / img / 360_btn_download.png
  • res / img / 480_btn_download.png

そして、あなたのコードは次のようになります:

public static Bitmap Bitmap(String path) {
    return Bitmap.getBitmapResource(Display.getWidth() + "_" + path);
}
于 2012-07-18T10:45:06.433 に答える
1

320x240_img1解像度に応じて画像を取得したい場合は、...のように解像度に応じて画像に名前を付けます360x480_img1。これらの画像を別のフォルダに配置する必要はありません....これらの画像をurresフォルダにダンプして、次のように呼び出します

int x = Display.getWidth();
int y = Display.getHeight();

String xx = Integer.toString(x);
String yy =Integer.toString(y);
_encImg = EncodedImage.getEncodedImageResource(xx+"x"+yy+".jpg");                                       
于 2012-07-18T11:25:10.550 に答える