16

アセットフォルダーにいくつかの画像があるAndroidアプリケーションがあります。今、私はその画像の配列を作りたいと思っています。今私の問題は次のとおりです:-画像が描画可能な場合、次のような配列を作成できます

int x[] = {
    R.drawable.ss,
    R.drawable.aa, R.drawable.sk,
    R.drawable.xx
};

等々。画像がアセットフォルダーにある場合、上記と同じ画像の配列を作成するにはどうすればよいですか。クラスレベルで配列を作りたい。

4

4 に答える 4

26

以下のように画像ごとに読み取る必要があります。

AssetManager を使用して、その open() メソッドを使用して InputStream を取得し、BitmapFactory の decodeStream() メソッドを使用して Bitmap を取得できます。

private Bitmap getBitmapFromAsset(String strName)
    {
        AssetManager assetManager = getAssets();
        InputStream istr = null;
        try {
            istr = assetManager.open(strName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Bitmap bitmap = BitmapFactory.decodeStream(istr);
        return bitmap;
    }
于 2013-09-24T05:30:18.123 に答える
6

画像がassetsディレクトリの画像フォルダーに保存されている場合、画像のリストを方法として取得できます

private List<String> getImage(Context context) throws IOException {
      AssetManager assetManager = context.getAssets();
      String[] files = assetManager.list("image");   
      List<String> it = Arrays.asList(files);
      return it; 
}
于 2013-09-24T05:33:00.663 に答える
4
 // load image from asset folder 
        try {
            // get input stream
            InputStream ims = getAssets().open("avatar.jpg");
            // load image as Drawable
            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView
            mImage.setImageDrawable(d);
        }
        catch(IOException ex) {
            return;
        }

  or you can create drawable array
    Drawable d []={d};
于 2013-09-24T05:34:08.483 に答える
1

drawables と assests について間違った意味を持っています。すべてのドローアブルはRで独自のIDを持っているため(R.dawable.ssなど)、配列を「ドローアブル」にすることができます。したがって、適切なコンテキストがあれば、指定された整数を使用してドローアブルを取得できます。

画像などのファイルを管理するもう 1 つの方法は assest です。ID で画像を管理したい場合は、この画像をドローアブルに追加する必要があります。他の方法では、assests ファイルは dir 内の単純なファイルのように管理する必要があります。

アセットからファイルを取得AssetManager am=this.getAssets();し、読み書きできるようにファイルを準備する必要があります。画像がある場合は、次のようなことができます。

try {    
    Bitmap bmp=BitmapFactory.decodeStream(am.open("009.gif"));
    imageView.setImageBitmap(bmp);

} catch (IOException e) {
    e.printStackTrace();
}
于 2013-09-24T05:34:04.497 に答える