[英]android UI lag on some devices
我有一个包含viewpager和导航抽屉的android项目。 在viewpager的每个片段中,我都有一个包含服务器负载数据的gridview! 我的问题是,从低硬件到功能强大的所有设备,一切都可以正常工作,但是在某些设备(例如galaxy s4和某些Sony xperia)中,它在滚动gridview或打开导航抽屉时会产生很大的延迟。 它出什么问题了?
PS:下面是gridview适配器的代码:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.grid_item, parent, false);
}
SimpleData item = myDatas.get(position);
((TextView) convertView.findViewById(R.id.title)).setText(item.getName());
ImageView thumbnail = (ImageView) convertView.findViewById(R.id.thumbnail);
thumbnail.getLayoutParams().height = thumbnail.getLayoutParams().width;
if (item.getThumbnail() != null && !item.getThumbnail().isEmpty()) {
if (item.getThumbnail().startsWith("http")) {
Picasso.with(mContext)
.load(item.getThumbnail())
.placeholder(R.drawable.loading)
.into(thumbnail);
} else {
Picasso.with(mContext)
.load(Uri.fromFile(new File(item.getThumbnail())))
.placeholder(R.drawable.loading)
.into(thumbnail);
}
} else {
thumbnail.setImageResource(R.drawable.noimage);
}
((TextView) convertView.findViewById(R.id.province)).setText(item.getProvince());
((TextView) convertView.findViewById(R.id.likesCount)).setText(item.getLikesCount() + "");
convertView.forceLayout();
return convertView;
}
终于我找到了问题! 滞后的原因是代码的其他部分在UI线程的Line下方设置了图像:
thumbnail.setImageResource(R.drawable.noimage);
因此,我用compress之一替换了可绘制的“ noimage”,并更改了这一行以使用Picasso加载文件,如下所示,一切正常。
Picasso.with(mContext)
.load(R.drawable.noimage)
.placeholder(R.drawable.loading)
.into(thumbnail);
谢谢大家的帮助。
您的getView方法正在做很多事情,您应该了解如何在GridView中异步加载位图,并且这样做不会滞后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.