我创建了一个示例代码,用于从库中加载所有图像并将它们显示在GridView中。
我正在使用picasso open source library来显示图片。
GridView
卷轴非常慢,我想要一次显示1000多张图片。
这是我获取图像的代码,这是一个基本光标。
paths = new ArrayList<String>();
cursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if (cursor != null) {
for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToPosition(i);
paths.add(cursor.getString(1));
}
}
以下代码是显示图片的getview()
中的BaseAdpter
实现。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
SquaredImageView iv = (SquaredImageView) convertView;
if (iv == null) {
iv = new SquaredImageView(inflater.getContext());
}
String url = data.get(position);
Picasso.with(inflater.getContext()).load(new File(url)).into(iv);
return iv;
}
/** An image view which always remains square with respect to its width. */
final public class SquaredImageView extends ImageView {
public SquaredImageView(Context context) {
super(context);
}
public SquaredImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());
}
}
答案 0 :(得分:0)
您应该只显示屏幕上当前可见的照片,也可以预先加载它们上方和下方的照片。当他们离开屏幕时,你应该摆脱它们以清除记忆。
使用gridView.setOnScrollListener
侦听滚动。在onScroll()事件中,使用参数firstVisibleItem
和visibleItemCount
来计算要显示和隐藏的视图。