1

我有一个 ListView,ListView 的每个项目视图在创建和解码它们时都在绘制几个位图。但是在滚动时,即使我在三星 S3 上测试它也不是很流畅。

我的解决方案是让它在滚动时变成静态图像。但很难实施。

有没有一种简单的方法或更好的方法可以让它表现得更好?

主要绘图代码:

  Bitmap bitmap = decoder.getFrame(index);
  if (bitmap != null) {
    if (!bitmap.isRecycled()) {
      canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), new Rect(0, 0, fixedSize, fixedSize), paint);
      invalidate();
    }
  }


public Bitmap getFrame(int n) {
    if (frameCount <= 0)
        return null;
    if (n >= frames.size())
        return null;
    n = n % frameCount;
    return ((GifFrame) frames.elementAt(n)).image;
}
4

3 回答 3

0

试试这个使 ListView 滚动平滑

于 2013-09-30T12:23:04.113 回答
0

列表视图滚动不流畅,因为您在 UI 线程上进行操作。

为了避免这种情况,您应该使用 Scroll 侦听器。仅在滚动停止时执行操作,并且仅针对可见项目。

检查 API 演示示例中的 List13.java。

于 2013-09-05T05:05:20.627 回答
0

您可能应该使用像UrlImageViewHelperAndroid-Universal-Image-Loader这样的第三方库来为您加载图像。这些库通常会处理复杂的东西,比如多线程和视图回收/失效。

于 2013-09-05T05:29:18.917 回答