我是android的新手,所以我试图在gridview中显示超过50 Xhdpi的图像大小但是当我执行我的程序时执行此操作它会使屏幕保持一段时间然后执行。
任何人都可以说明为什么需要时间。
这是我的代码:
mGv_detail = (GridView) findViewById(R.id.gridView1);
init();
key_value = getIntent().getIntExtra("values", 0);
switch (key_value) {
case 0:
mGv_detail.setAdapter(new DetailAdapter(this, first_images));
break;
@Override
public View getView(final int position, View view, ViewGroup parent) {
View v = view;
RecordHolder holder = null;
LayoutInflater mInflater = (LayoutInflater) mContext
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (v == null) {
v = mInflater.inflate(R.layout.items, parent, false);
holder = new RecordHolder();
holder.imagev = (ImageView) v.findViewById(R.id.imag_v);
v.setTag(holder);
} else {
Log.e("Position", "" + position);
holder = (RecordHolder) v.getTag();
}
Bitmap bitmap1 = BitmapFactory.decodeResource(v.getResources(),
items.get(position));
holder.imagev.setImageBitmap(bitmap1);
// holder.imagev.setImageResource(items.get(position));
holder.imagev.setAdjustViewBounds(true);
holder.imagev.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(mContext, Christmas.class);
i.putExtra("clickposition", position);
Log.e("postiont clicked", position+"");
mContext.startActivity(i);
}
});
return v;
}
static class RecordHolder {
ImageView imagev;
}
}
答案 0 :(得分:0)
这是很多图片。即使对于本地图像文件,它也会滞后。
您应该使用像“通用图像加载器”这样的工具 -
基本上,鉴于许多图像,需要一些时间。我有一个包含大量图像的GridView,并且使用通用图像加载器,即使在快速的新设备上也需要大约3或4秒。但是,它会立即显示,您可以使用图像观看网格填充,如果您使用工具,这不是什么大问题。如果你不这样做,你真的感觉到了滞后。
答案 1 :(得分:0)
用于在GridView中显示单元格的getView方法是将位图同步加载到内存中。鉴于此事件顺序,延迟非常自然。如果您使用Android可用的众多图像加载库之一,则可以非常轻松地将此工作卸载到后台线程,并在准备好时回调。我个人最喜欢的是毕加索。
http://square.github.io/picasso/
您可以将Picasso添加为jar文件或通过gradle添加,然后图像加载看起来像这样:
int resId = images.get(position);
Picasso.with(getContext()).load(resId).into(holder.imagev);