我已经阅读了所有outofmemoryerror线程,我知道我正在尝试调整大小到妈妈的图像。我将这些图像存储在我的服务器上,最大尺寸为250x250。我想在列表中加载它们。我已经实现了一个缓存系统,它运行良好。问题是我从服务器缓存图像大小,每次我从缓存中拉出它时仍然会调整大小。
我想在将图像放入缓存之前调整图像大小。我正在使用xml来调整列表中的图像大小。
<ImageView android:id="@+id/img_user" android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/noimgsmall"
android:scaleType="fitCenter"/>
我的列表适配器是将图像放入缓存的位置。问题是我目前还不知道imageview的大小。
Drawable cachedImage = null;
cachedImage = imageLoader.loadImage(
store.getLogoUrl(),
new ImageThreadLoader.ImageLoadedListener() {
public void imageLoaded(Drawable imageBitmap) {
View itemView = parent.getChildAt(position -
((ListView) parent).getFirstVisiblePosition());
if (itemView == null) {
return;
}
ImageView img = (ImageView)
itemView.findViewById(R.id.img_user);
if (img == null) {
return;
}
img.setImageDrawable(imageBitmap);
}
}
);
logoImageView.setImageDrawable(cachedImage);
如何确定要缓存的图像大小?
答案 0 :(得分:1)
我最终做的是将图像调整为实际缩放尺寸然后缓存。没有更多的记忆问题。 Aviod会在列表视图中尽可能重新调整大小。