Android ListView中的位图:加载缓慢
在我的ListView中,每行有一个ImageView和两个TextView。ListView的图片是从我的Galaxy Nexus内存中加载的。我已经使用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中高效地显示位图是一项相当复杂的任务,涉及相当多的变量。我建议您阅读并下载他们提供的代码示例。这是一个很好的起点,在简单的情况下,可能足以进行复制粘贴。在
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
中加载它们。这里有一个很好的视频展示了这种方法:
有没有办法使用缩略图?搜索了很多,但只找到了缩小原始位图的可能性。有没有办法使用缩略图?搜索了很多,但只找到了缩小原始位图比例的可能性