1

私は android.support.v4.app.Fragments を使用しています。バイト配列として取得する画像のリストに入力する必要があります。

これは私のコードです

final NewSite site = data.get(position);

        if(null != site.getImage()){
            bmp = BitmapFactory.decodeByteArray(site.getImage(), 0, site.getImage().length, options);
            holder.image.setImageBitmap(bmp);
        }
        if(null != site.getDescription())
            holder.informations.setText(site.getDescription() + "    " + position);
        if(site.getListOfChildren() != null && site.getListOfChildren().size() != 0){
            Log.i("BitmapFactory", site.getListOfChildren().size() + "");
            for (NewSite newSite : site.getListOfChildren()) {


                if(null != newSite.getImage()){
                    bmp = BitmapFactory.decodeByteArray(newSite.getImage(),0,newSite.getImage().length, options);
                    view = new ImageView(context);

                    view.setLayoutParams(new LayoutParams(30, 20));
                    view.setPadding(2, 0, 2, 2);

                    view.setImageBitmap(bmp);

                    holder.listOfImages.addView(view);
                    bmp = null;
                    //view = null;
                }

そしていつも私は得るOutOfMemoryError Exception

4

1 に答える 1

1

画像のサブサンプリングされたバージョンを表示します (まだ行っていない場合、オプション コードは質問に含まれていません) Bitmap。クリックすると、いつでも のより高い解像度のバージョンを表示できBitmapます。

メモリ不足にならないように、アプリの 1 つでこのコードを使用して画像をサブサンプリングします。

BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = yourSampleSize;

Bitmap returnBmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath(), o2);

これが解決策を見つけるのに役立つことを願っています。処理に関するメモリ不足の問題Bitmapは決して楽しいものではありません。

于 2013-06-10T09:01:54.803 に答える