我想制作一个网格视图,以显示sdcard中文件夹中的照片缩略图。 图像分辨率为3264x2448。我使用Notras Universal Image Loader lib with config:
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub)
.showImageForEmptyUri(R.drawable.stub)
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
.showImageOnFail(R.drawable.ic_launcher).cacheInMemory()
.cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565).build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
context).defaultDisplayImageOptions(options).build();
我的自定义适配器中的getView():
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if (convertView == null) {
imageView = (ImageView) mInflater.inflate(R.layout.grid_item,
parent, false);
} else {
imageView = (ImageView) convertView;
}
mImageLoader.displayImage(mListData.get(position), imageView, options);
return imageView;
}
但它加载图像太慢了。 所以请帮助我更快地加载缩略图。我不想显示高质量的图像,我只想快速显示。
提前致谢。
UIL版本:1.8.4 Android版本测试:2.3.3
答案 0 :(得分:1)
您可以使用它来获取缩略图:
Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
getContentResolver(), selectedImageUri,
MediaStore.Images.Thumbnails.MINI_KIND,
(BitmapFactory.Options) null );
有两种类型的缩略图: MINI_KIND:512 x 384缩略图 MICRO_KIND:96 x 96缩略图
或者使用几乎相同参数的queryMiniThumbnail来获取缩略图的路径。
Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(
getContentResolver(), selectedImageUri,
MediaStore.Images.Thumbnails.MINI_KIND,
null );
if( cursor != null && cursor.getCount() > 0 ) {
cursor.moveToFirst();//**EDIT**
String uri = cursor.getString( cursor.getColumnIndex( MediaStore.Images.Thumbnails.DATA ) );
}
您可以在图像加载器中使用此uri来查看缩略图
答案 1 :(得分:1)
尝试在配置中使用.discCacheExtraOptions(800, 800, CompressFormat.PNG, 0)
。根据设备的最大尺寸,您可以改变值“800”。