这是我的设置。我有一个ListView
带有一些花哨标题的自定义,它位于ViewPager
. 我正在维护一个已下载并存储在本地的图像的内存缓存,就像任何有自尊的开发人员一样。
我遇到的问题是,每次我使用缓存中的位图调用我的方法setImageBitmap(Bitmap bm)
时,都会导致我的所有视图都变为. 我查看了Android源代码,发现了这个:ImageView
ListView
getView()
onMeasure()
ImageView
public void setImageDrawable(Drawable drawable) {
if (mDrawable != drawable) {
mResource = 0;
mUri = null;
int oldWidth = mDrawableWidth;
int oldHeight = mDrawableHeight;
updateDrawable(drawable);
if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) {
requestLayout();
}
invalidate();
}
}
所以我可以看到setImageDrawable
(由 调用)只要具有与以前不同的尺寸,setImageBitmap
就会请求其布局。问题是我的静态设置为 60dp x 60dp,因此无论其图像大小如何,它的大小都不会改变。drawable
Drawable
ImageView
有没有办法让我在滚动时绕过不断重新测量的布局?和调用正在向上传播onMeasure
,因此我的和也在列表滚动的中间进行测量,这显然会导致严重的性能问题(大约 100 毫秒的 UI 跳转)。onLayout
View
ListView
ViewPager
性能很糟糕,我需要纠正它。任何人有任何解决方案?
谢谢。