我正在使用GridView显示图像,这些图像存储在SD卡中的设备中。当我滚动GridView时,滚动不顺畅。 customAdapter的getview函数如下:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = inflater.inflate(R.layout.main_xml, parent, false);
ImageView photo= (ImageView) view.findViewById(R.id.gImage);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;
photo.setLayoutParams(new LinearLayout.LayoutParams(width/2, width/2));
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(imageUrls.get(position).getimageUrl(), options);
photo.setImageBitmap(bitmap);
return view;
}
其中imageUrl是字符串的arrayList,它是Sd卡中图像的位置。我还动态设置ImageView的宽度和高度。
答案 0 :(得分:0)
您正在以decodeFile()
电话的形式在主应用程序线程上执行磁盘I / O.这会给你带来性能问题。
有许多图片加载库,例如Picasso和Universal Image Loader。请使用其中之一。他们会在后台加载您的图片,并在图片准备好时填充ImageView
。如果您坚持为此滚动自己的代码,请对您的磁盘I / O使用AsyncTask
或其他后台线程。
除此之外,正如Selvin在评论中指出的那样,请注意convertView
的{{1}}参数,并且在不需要时不要盲目地夸大布局。