3

レイアウトで画像スライダーを使用しています。このために使用しました

      private Integer[] mImageIds = { R.drawable.j, R.drawable.f,R.drawable.i,    R.drawable.g, R.drawable.k }; 

画像を取得しますが、SDカードから画像を取得し、これらの画像をその配列に保存したいのですが、どうすればよいですか?以下は私のコードです。親指をデータベースに保存しました。ビットマップをドローアブルに変換してから、これを配列mImagesに保存する方法を教えてください。

      List<String> thumb = new ArrayList<String>();
     public Integer[] mImageIds;
     Bitmap bitmap;
            thumb = db.getRecomdThumb();//get image address from db
    for(int i = 0; i < thumb.size();i++){
        bitmap = BitmapFactory.decodeFile(thumb.get(i));
        Drawable d = new BitmapDrawable(getResources(),bitmap);

    } 
4

2 に答える 2

1

整数配列に追加できるのは、「res」フォルダ内に保存した画像のみです。動的に作成されたビットマップからintresを作成できます。コードで述べたように、それをDrawableに変換することしかできません。

私に言わせれば、動的に作成されたドローアブルをresフォルダーに追加すると、Int表現を取得できますか?それは不可能です。

「Res」フォルダは変更できません。読み取り専用です。

したがって、必要なのは、整数配列の代わりにDrawable配列を作成して、操作を実行することです。

このようなものはうまくいくでしょう、

  List<String> thumb = new ArrayList<String>();
     public Integer[] mImageIds;
     Bitmap bitmap;
            thumb = db.getRecomdThumb();//get image address from db
  private Drawable[] drawables = new Drawable[thumb.size()];
    for(int i = 0; i < thumb.size();i++){
        bitmap = BitmapFactory.decodeFile(thumb.get(i));
        drawables[i] = new BitmapDrawable(getResources(),bitmap);

    } 
于 2012-10-03T08:39:29.690 に答える
0

あなたはただ作成することができます

private Drawable[] drawables = new Drawable[mImageIds.length];

それぞれのサイズで画像をコピーします。

とは言っても、ドローアブルは大きく、それら(またはビットマップ)をメモリに保存すると、受話器のヒープサイズが通常小さいため、メモリ不足の状況にすぐに遭遇する可能性があります。

于 2012-10-03T08:29:26.980 に答える