我正在编写一个具有网格视图和一些图像的应用程序,我正在使用默认的垂直滚动,因为并非所有图像都适合屏幕。我总是滚动,并且在新行的渲染上有一条新线要显示,似乎有一个滞后。
所有图像都是可绘制的,所以它不是由加载图像之类的东西造成的,至少不是明确的。那么,任何想法如何解决问题?滚动在我的atrix中滞后,应用程序应该运行的最终设备远比它差。
编辑 - 这里有一些代码:
public View getView(int position, View convertView, ViewGroup parent) {
T item = getItem(position);
Box box = convertView == null ? new Box(mContext) : (Box) convertView;
onBindModel(box, item);
return box;
}
和
@Override
public void onBindModel(Box box, Model item) {
box.param.putSerializable("model", item);
box.setDescricao(item.getNome());
box.getModelImageView().setImageResource(item.thumbResId);
}
修改
所以,正如所建议的,只是尝试了这段代码,但仍然得到了相同的结果:
@Override
public void onBindModel(final Box box, final Model item) {
box.param.putSerializable("model", item);
box.setDescricao(item.getNome());
new Thread(){
public void run() {
Message msg = new Message();
msg.obj =box.getModelImageView();
msg.arg1 =item.thumbResId;
mHandler.sendMessage(msg);
}
}.start();
}
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
Bitmap bm = BitmapFactory.decodeResource(getResources(), message.arg1);
setImage((ImageView) message.obj,bm);
}
};
public void setImage(ImageView imgView, Bitmap bm) {
imgView.setImageBitmap(bm);
}
当滚动到下一行时,我得到一个挂起,然后它就会继续正常。
提前致谢
答案 0 :(得分:1)
所有图像都是可绘制的,所以它不是由类似的东西引起的 至少,没有明确地加载图像。
事实并非如此。这项工作是在UI线程上完成的。 参考 http://developer.android.com/reference/android/widget/ImageView.html#setImageResource(int)
您可能需要考虑延迟加载图片。已经在各地广泛讨论了多种方法。谷歌吧。
答案 1 :(得分:0)