2013-10-18 57 views
0

我试图懒我的drawabale文件夹中加载我的图像到网格视图。但似乎setImageDrawable放慢了向下滚动。懒惰从gridview中的绘图加载图像

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ImageView anImageView; 
    if(convertView == null){ 
     anImageView = new ImageView(mContext); 
     anImageView.setLayoutParams(new GridView.LayoutParams(70, 70)); 
     anImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    } else { 
     anImageView = (ImageView) convertView; 
    } 

    anImageView.setImageDrawable(...); 

    return anImageView; 
} 

任何人都可以帮忙吗?

+0

您是否使用已加载的图像设置绘图?或者,您是否在运行时从您的/ res /文件夹中提取每个图像?或者,您是一次加载互联网上的每张图片吗?我假设你已经完成了剖析,知道setImageDrawable是缓慢的部分,它实际上并不在其他地方? – Martin

+0

我在运行时将res文件夹中的每个图像都带出来。所有图像都在可绘制文件夹中。无网络调用。我应该创建一个异步任务来创建drawable并将drawable传递给gridviewadapater?不,不分析。我刚刚在网上阅读过,其他人在使用getView方法中使用setImageDrawable将一堆图像加载到gridview中时遇到了同样的问题 – n3wb

回答

0

我通过创建一个imageloader异步任务解决了这个问题,并设置了onpostexecute图像视图的drawbale。以防其他人遇到问题。滚动现在平滑

+0

嗨,我有一个问题,你如何处理内存消耗? –

+0

内存消耗是我也遇到的问题。幸运的是图像非常小(即126 x 126像素)。在将它们交给网格片段(70 x 70)之前,我一定要调整它们的大小。除此之外,我可能会推荐一些第三方懒惰装载机。在旧手机上通过异步任务加载它们看起来很可怕。 – n3wb

+0

大部分第三方懒惰加载器都非常复杂,主要基于来自互联网的图像,我试图修改它们,但没有工作:( –