【发布时间】:2012-08-22 05:53:01
【问题描述】:
首先,是的,我知道这个question,但答案对我没有帮助。是的,它解决了“滚动时改变位置”的问题,但它不是我的问题的最佳解决方案。让我解释一下……
所以,这是我的 getView:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
UnscaledImageView imageView;
if(convertView == null) {
imageView = new UnscaledImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(mIconSize, mIconSize));
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(mThumbIds[position]);
} else {
imageView = (UnscaledImageView)convertView;
}
return imageView;
}
常见的解决方案是将imageView.setImageResource(mThumbIds[position]); 移到if 语句的外部和下方。但这又带来了另一个问题……
您可能已经注意到,我使用的是UnscaledImageView 而不是ImageView。这是ImageView 的自定义子类,我重写了setImageResource() 方法来手动解码位图,并提供一些额外的选项来满足我的需要。手动解码是导致我的问题的原因。
如果setImageResource()方法留在if里面,没问题,位图解码一次(在GridView加载期间),滚动会很流畅... 但是图像会每次滚动都会跳到不同的位置。
但是如果setImageResource() 方法停留在if 之外,图像不会跳转到不同的位置,但所有图像都会随着每次滚动而不断解码。 滚动会很生涩,一点也不流畅。
我该如何解决这个问题?有什么想法吗?
【问题讨论】:
标签: android bitmap android-imageview decoding android-gridview