在我的应用程序中,我有一个画廊,一个包含图像视图的网格视图。代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(LAYOUT_WIDTH, LAYOUT_HEIGHT));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
BitmapFactory.Options o = new BitmapFactory.Options();
o.inSampleSize = 5;
Bitmap previewBitmap = Bitmap.createScaledBitmap(
BitmapFactory.decodeFile(picture_paths[position], o),
LAYOUT_WIDTH,
LAYOUT_HEIGHT,
false);
imageView.setImageBitmap(previewBitmap);
return imageView;
}
当然,它的性能非常糟糕,因为它必须在每次绘制元素时调整大小并加载位图。但是,如果我在 if(convertView == null) 块内移动调整大小代码,则不会保持元素的顺序 - 当用户滚动浏览 gridview 时,每个图像都会不断改变位置。
在没有性能问题的情况下执行此操作的正确方法是什么?