[英]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.