【发布时间】:2011-02-23 12:56:31
【问题描述】:
我玩 android 的缩略图已经有一段时间了,我看到了一些让我想尖叫的不一致之处。我的目标是创建一个包含缩略图和文件名的所有图像的简单列表(以及一个单独的视频列表)。
设备:HTC Evo(来自 Google I/o 的新品)
首先: http://androidsamples.blogspot.com/2009/06/how-to-display-thumbnails-of-images.html
该代码似乎根本不起作用,缩略图是重复的……有些带有“镜像”效果,有些没有。还有一些不会加载,只会显示一个黑色方块。我尝试通过从 SD 卡中删除“alblum thumbs”目录来重建缩略图。 HTC 的图库应用程序似乎一切正常。
这种方法似乎有效:
Bitmap thumb = MediaStore.Images.Thumbnails.getThumbnail(
getContentResolver(),
id, MediaStore.Video.Thumbnails.MICRO_KIND, null);
imageView.setImageBitmap(curThumb);
其中 id 是 original 图像 id,imageView 是一些图像视图。这很棒!但是,奇怪的是,在 SimpleViewBinder 中使用太慢了。下一个方法:
String [] proj = {MediaStore.Images.Thumbnails._ID};
Cursor c = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
proj, MediaStore.Images.Thumbnails.IMAGE_ID + "=" +id ,
null, null);
if (c != null && c.moveToFirst()) {
Uri thumb = Uri.withAppendedPath(mThumbUri,c.getLong(0)+"");
imageView.setImageURI(thumb);
}
我应该解释一下,我认为需要 WHERE 条件,因为似乎无法保证您的 uri 对于缩略图及其父图像具有相同的 ID。这适用于所有当前图像,但是一旦我开始使用相机添加图片,它们就会显示为空白!调试显示一个可怕的:
SkImageDecoder::Factory returned null
错误并且 URI 作为无效返回。这些与之前调用的图像相同。谁能抓住我的逻辑错误或指出一些工作代码?
【问题讨论】:
-
我采用第一种方法并使用线程来实际加载缩略图。不过,Uri 方法要快得多……可惜我无法弄清楚!
标签: android media thumbnails