1

滚动时出现滞后问题和列表项之间的空间问题。如果有人能给我提示我的代码有什么问题,我会非常高兴。

当我的应用程序启动时,我从我的服务器下载所有缩略图并像这样保存它们:

FileOutputStream fos = openFileOutput(uniqueName, Context.MODE_PRIVATE);
fos.write(bytes);
fos.close();

所有图像均为 100 像素 x 75 像素

项目清单:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <ImageView
    android:id="@+id/pic"
    android:layout_width="100dp"
    android:layout_height="75dp">
   </ImageView>

</RelativeLayout>

然后我使用 asyncTask 加载图像,如下所示:

private Drawable d;

@Override
protected Integer doInBackground(String... arg0) {
   File filePath = ctx.getFileStreamPath(fileName);
   if (filePath.exists()) {
       d = Drawable.createFromPath(filePath.toString());
       return 1;
   }
   return 0;
}

@Override
protected void onPostExecute(Integer success) {

    if (success == 1) {
        listener.onCacheThumbCompleted(d);
    }
}

最后将图片添加到listItem中的imageView中:

public void onCacheThumbCompleted(Drawable drawable) {

    iv.setImageDrawable(drawable);
}

但是滚动的时候一点都不流畅。此外,图像似乎没有完全填充 imageView。即使我将 dividerHeight 设置为 0,它也是 listItems 之间的一个空格。 同样的问题,他通过调整图像大小解决了这个问题,但我需要调整图像大小/缩放图像来解决我的问题吗?

4

2 回答 2

2

平滑ListView在 Android 上可能非常复杂。我找到的最好的例子是Romain Guy 的Shelves。它具有许多复杂的模式,并且可能难以消化,但是如果您确实消化了所有内容,那么当您从另一边出来时会变得更加聪明:)

列出一些最重要的增强功能:

  • 图像延迟加载
  • 视图持有者
  • 调整图像大小

您还可以搜索这些增强功能并自己实现它们。

于 2013-07-10T07:58:01.837 回答
1

如果您有很多图像,请尝试使用 LAZYLIST/LAZY-LOADING。

于 2013-07-10T08:50:16.443 回答