网格视图滚动不顺畅

时间:2015-04-08 14:39:01

标签: android gridview imageview

我正在使用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的宽度和高度。

1 个答案:

答案 0 :(得分:0)

您正在以decodeFile()电话的形式在主应用程序线程上执行磁盘I / O.这会给你带来性能问题。

有许多图片加载库,例如PicassoUniversal Image Loader。请使用其中之一。他们会在后台加载您的图片,并在图片准备好时填充ImageView。如果您坚持为此滚动自己的代码,请对您的磁盘I / O使用AsyncTask或其他后台线程。

除此之外,正如Selvin在评论中指出的那样,请注意convertView的{​​{1}}参数,并且在不需要时不要盲目地夸大布局。

相关问题