重要的一点:不要在主线程进行耗时操作即可提高滑动的流畅度
- 不要在getView中执行耗时操作。直接在getView中加载图片肯定会卡顿,因为加载图片是耗时操作,这种操作必须采用异步的方式处理,如ImageLoader中的实现
- 控制异步任务的执行频率,getView中使用ImageLoader的bindBitmap方法异步加载图片,但是当用户频繁的上下滑动,这样一瞬间会有上百个异步任务,这些异步任务会造成线程池的拥堵并随即带来大量的UI更新。这个时候可以考虑在列表滑动的时候不加载图片,停止时加载图片
例如:
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
mIsGridViewIdle = true;
mImageAdapter.notifyDataSetChanged();
} else {
mIsGridViewIdle = false;
}
}
然后在getView中判断:
if (mIsGridViewIdle && mCanGetBitmapFromNetWork) {
imageView.setTag(R.id.imageloader_uri,uri);
Glide.with(getApplicationContext()).load(uri).placeholder(R.drawable.image_default).crossFade().into(imageView);
//mImageLoader.bindBitmap(uri, imageView, mImageWidth, mImageWidth);
}
- 硬件加速:设置
android:hardwareAccelerated="true"
来源:CSDN
作者:LCY天上殿
链接:https://blog.csdn.net/lichongya/article/details/51508313