Android ListView中的位图:加载缓慢

Android ListView中的位图:加载缓慢,android,image,bitmap,loading,Android,Image,Bitmap,Loading,在我的ListView中,每行有一个ImageView和两个TextView。ListView的图片是从我的Galaxy Nexus内存中加载的。我已经使用 Bitmap scaled = Bitmap.createScaledBitmap(de, 80, 80, true); 但它仍然需要几秒钟来加载 我能做什么 编辑: 在ListView中高效地显示位图是一项相当复杂的任务,涉及相当多的变量。我建议您阅读并下载他们提供的代码示例。这是一个很好的起点,在简单的情况下,可能足以进行复制粘贴。在

在我的ListView中,每行有一个ImageView和两个TextView。ListView的图片是从我的Galaxy Nexus内存中加载的。我已经使用

Bitmap scaled = Bitmap.createScaledBitmap(de, 80, 80, true);
但它仍然需要几秒钟来加载

我能做什么

编辑:


在ListView中高效地显示位图是一项相当复杂的任务,涉及相当多的变量。我建议您阅读并下载他们提供的代码示例。这是一个很好的起点,在简单的情况下,可能足以进行复制粘贴。

在ListView中高效地显示位图是一项相当复杂的任务,涉及大量变量。我建议您阅读并下载他们提供的代码示例。这是一个很好的起点,在简单的情况下,可能足以复制粘贴。

第一点我可以从您的代码中看到,您正在对流进行两次解码…在解码的第一个位置,它甚至没有在任何地方使用…因此删除该语句将提高代码的执行速度

 //BitmapFactory.decodeStream(is,null,options); comment this line
try {
    is.close();
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
我还想问一下,为什么你不能使用图片的缩略图?如果你试图在你的应用程序中显示图像的缩略图,而不是调整每个图像的大小

是的,有一个完整的表,存储您需要通过游标api访问的图像的缩略图,例如:

    Cursor mediaCursor = managedQuery(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
            null, null);
通过该光标,您可以获取图像Id,然后借助图像Id,您可以使用
MediaStore.Images.Thumbnails.getThumbnail()
方法检索图像的缩略图。例如,下面是一些有帮助的代码:

     Bitmap thumbBitmap = null;

    thumbBitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, imageID, MediaStore.Images.Thumbnails.MICRO_KIND, null);
    if(thumbBitmap != null){
        return new BitmapDrawable(thumbBitmap);
    }

第一点,我可以从你的代码中看到,你正在对流进行两次解码…在解码的第一个地方,它甚至没有在任何地方使用…因此删除该语句将提高代码的执行速度

 //BitmapFactory.decodeStream(is,null,options); comment this line
try {
    is.close();
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
我还想问一下,为什么你不能使用图片的缩略图?如果你试图在你的应用程序中显示图像的缩略图,而不是调整每个图像的大小

是的,有一个完整的表,存储您需要通过游标api访问的图像的缩略图,例如:

    Cursor mediaCursor = managedQuery(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
            null, null);
通过该光标,您可以获取图像Id,然后借助图像Id,您可以使用
MediaStore.Images.Thumbnails.getThumbnail()
方法检索图像的缩略图。例如,下面是一些有帮助的代码:

     Bitmap thumbBitmap = null;

    thumbBitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, imageID, MediaStore.Images.Thumbnails.MICRO_KIND, null);
    if(thumbBitmap != null){
        return new BitmapDrawable(thumbBitmap);
    }

最好的方法是在
AsyncTask
中加载它们。这里有一个很好的视频展示了这种方法:
最好的方法是在
AsyncTask
中加载它们。这里有一个很好的视频展示了这种方法:

有没有办法使用缩略图?搜索了很多,但只找到了缩小原始位图的可能性。有没有办法使用缩略图?搜索了很多,但只找到了缩小原始位图比例的可能性