【问题标题】:image browser android, can't load too much images图片浏览器android,无法加载太多图片
【发布时间】:2013-06-16 10:37:01
【问题描述】:

我正在尝试创建图像浏览器,但是当要加载的图像过多时出现错误

这是我的代码(位图用于第 100 行): http://pastebin.com/NidnH57b

如果尝试访问包含大量图像的目录,则会出错。

有加载大量图片的解决方案吗?

谢谢

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    我想说在活动开始时加载您需要的所有图像不是一个好习惯。例如,Listviews 仅加载将在您的适配器中显示的图像。你应该在 arraylist 中获取你需要的所有信息,并使用 arrayAdapter,例如,它将破坏并重新创建所需的视图以节省内存。

    一个简单的方法可以找到here

    【讨论】:

      【解决方案2】:

      您不应该在访问目录时预加载所有图像。相反,您应该在适配器的getView 中加载图像(异步)。此外,您可能希望根据图像的分辨率缩小图像,而不是使用inSampleSize 的固定值。这个网站可能会帮助你:http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

      顺便说一句。你还应该看看ViewHolder-Pattern(例如这里http://www.jmanzano.es/blog/?p=166)。

      【讨论】:

        【解决方案3】:

        使用MediaStore 获取通过文件迭代的所有设备图像非常慢。你可以像这样得到它们:

        Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA,
                    MediaStore.Images.Media.BUCKET_ID };
            String selection = MediaStore.Images.Media.BUCKET_ID + " = " + mAlbumId; //to get from specified folder
            Cursor cursor = getContentResolver().query(uri, projection, selection, null, null);
        
            while (cursor.moveToNext()) {
                Picture picture = new Picture();
                int columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
                picture.path = cursor.getString(columnIndex);
        
                columnIndex = cursor.getColumnIndex(MediaStore.Images.Media._ID);
                picture.id = cursor.getLong(columnIndex);
        
                columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID);
                picture.bucketId = cursor.getString(columnIndex);
        
                mAvailableImages.add(picture);
            }
            cursor.close();
        

        然后使用自定义适配器在 ListView 中检索到的数据并编写您自己的 ImageManager,它将为您创建和管理位图。

        您可以阅读thisthis 主题。

        另外看看Android原生图库http://viralpatel.net/blogs/pick-image-from-galary-android-app/

        【讨论】:

          最近更新 更多