Image 带有通用图像加载器的Gridview图像加载缓慢
我正在使用universal image loader从assets gallary将缩略图填充到gridview中,但在上下滚动期间图像加载速度较慢,因此我认为,因为图像是以当前分辨率加载的,所以我可以如何更改图像的分辨率,例如,我使用Image 带有通用图像加载器的Gridview图像加载缓慢,image,gridview,loader,universal,auto-populating,Image,Gridview,Loader,Universal,Auto Populating,我正在使用universal image loader从assets gallary将缩略图填充到gridview中,但在上下滚动期间图像加载速度较慢,因此我认为,因为图像是以当前分辨率加载的,所以我可以如何更改图像的分辨率,例如,我使用createScaledBitmap进行缩放位图 这是我的密码: public class ImageAdapter extends BaseAdapter { private Context mContext; private List<String&g
createScaledBitmap
进行缩放位图
这是我的密码:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private List<String> mList;
private int mheight;
private int mwidth;
private InputStream is;
private HomePage homePage;
private ImageLoader imageLoader;
public ImageAdapter(Context context, List<String> list, int height, int width) {
mContext = context;
mList = list;
mheight = height;
mwidth = width;
ImageLoader imageLoader = ImageLoader.getInstance();
this.imageLoader = imageLoader;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position).toString();
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) convertView;
}
File cacheDir = new File(Environment.getExternalStorageDirectory(), "UniversalImageLoader/Cache");
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext)
.threadPoolSize(5)
.memoryCacheExtraOptions(mwidth/3, mwidth/3)
.threadPriority(Thread.MIN_PRIORITY )
.memoryCache(new UsingFreqLimitedMemoryCache(5000000)) // You can pass your own memory cache implementation
.discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
.build();
imageLoader.init(config);
//
//
//display options
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.loading)
.showImageForEmptyUri(R.drawable.loading)
.cacheInMemory()
.cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(ImageScaleType.EXACTLY)
.build();
// // Create configuration for ImageLoader
String imString = mList.get(position);
String imageUria = "assets://"+imString;
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(mwidth/3, mwidth/3));
imageLoader.displayImage(imageUria, imageView ,options );
return imageView ;
公共类ImageAdapter扩展了BaseAdapter{
私有上下文;
私人名单;
私营机构;
私人英特姆维兹;
私有输入流是;
私人网页;
私有图像加载器;
公共ImageAdapter(上下文上下文、列表、整数高度、整数宽度){
mContext=上下文;
mList=列表;
mheight=高度;
mwidth=宽度;
ImageLoader ImageLoader=ImageLoader.getInstance();
this.imageLoader=imageLoader;
}
@凌驾
public int getCount(){
返回mList.size();
}
@凌驾
公共对象getItem(int位置){
返回mList.get(position.toString();
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
图像视图图像视图;
if(convertView==null){
imageView=新的imageView(mContext);
}否则{
imageView=(imageView)convertView;
}
File cacheDir=新文件(Environment.getExternalStorageDirectory(),“UniversalImageLoader/Cache”);
ImageLoaderConfiguration配置=新建ImageLoaderConfiguration.Builder(mContext)
.线程池大小(5)
.memoryCacheExtraOptions(mwidth/3,mwidth/3)
.threadPriority(Thread.MIN_PRIORITY)
.memoryCache(新的UsingFreqLimitedMemoryCache(5000000))//您可以传递自己的内存缓存实现
.discCache(新的UnlimitedDiscCache(cacheDir))//您可以传递自己的磁盘缓存实现
.build();
init(config);
//
//
//显示选项
DisplayImageOptions=new DisplayImageOptions.Builder()
.showStubImage(R.可绘制.加载)
.showImageForEmptyUri(R.可牵引装载)
.cacheInMemory()
.cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(imageScaleType.Justice)
.build();
////为ImageLoader创建配置
字符串imString=mList.get(位置);
String imageria=“资产:/”+imString;
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
setLayoutParams(新的GridView.LayoutParams(mwidth/3,mwidth/3));
displayImage(imageUria、imageView、选项);
返回图像视图;
}
}这可能与您从网站下载的图像的分辨率有关。我不太确定UniversalImageLoader是否会让你控制它。你认为这是加载速度慢的原因吗?尽管我的源代码不是来自网站,而是来自Asset能否在onCreate中初始化生成器和所有内容(所有设置),并且只在getView(…)中执行imageView函数(最后3行)?尝试一下。尝试一下可能会比以前快一点,但仍然是存根图像(在图像加载过程中,存根图像将显示在ImageView中)在图像显示前会持续一秒一整秒?它确实取决于图像分辨率。。。