如何使滑行显示像毕加索?

How to make glide display like picasso?

我一直在使用 Picasso 的库将图像加载到我的应用程序中的 gridview 中,它的工作原理和外观完全符合我的要求。但是用户告诉我图片加载速度非常慢。我知道这是因为网络速度不佳,毕加索正在加载我的非常大的完整图像,然后调整它们的大小以适合我的图像视图。所以我尝试使用 glide,它以几乎两倍的速度加载图像,但在某些图像上它不像 Picasso 那样保持结构。例如毕加索加载图像看起来像

虽然滑动加载它们有不同的状态,但这是它最初加载的状态

然后滚动后看起来像

然后经过大量滚动后最终看起来像

我非常有信心这是因为我的图片尺寸都不同,而且让我的占位符图片尺寸不同似乎也有影响,但我想知道的是如何滑动以保持它的效果初始状态,或者如何让 Picasso 加载得更快?我听说将颜色格式从 888 降低到 565 会产生戏剧性的效果,有人能借我两美分吗?感谢您的任何和所有建议

编辑

这是我的图片视图

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:id="@+id/imageView"/>

我就是这样称呼毕加索的

                 Picasso.with(getActivity())
                .load(mThumbIds[position])
                .placeholder(R.drawable.placeholder)
                .fit()
                .into(imageView);

        return imageView;

这就是我现在调用 glide 的方式

                 Glide.with(getActivity())
                .load(mThumbIds[position])
                .asBitmap()
                .placeholder(R.drawable.placeholder)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .fitCenter()
                .error(R.drawable.ic_photos)
                .into(imageView);

         return imageView;

如果重要的话,这是我的 gridview

    <GridView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="5dp"
    android:id="@+id/gridview"
    android:numColumns="2"
    android:gravity="center"
    android:drawSelectorOnTop="true"
    android:listSelector="@drawable/ripple"
    android:stretchMode="columnWidth"
    >

默认情况下,Glide 会尝试保持图像的纵横比。当您使用 fitCenter() 时,这意味着您希望整个图像在可用区域内可见并居中。切换到 centerCrop() 将是确保图像填充可用的高度和宽度的第一步。

但是,您也 运行 陷入 GridView 的一个长期存在的问题:它假定所有列都具有相同的高度。然而,你使用 wrap_content 作为你的 ImageView 的高度,导致每个元素根据传入的高度调整不同的大小(记住,从 Glide 的角度来看,你说你的 ImageView 可以是需要的高度!)。

如果你有一个主要的纵横比(比如,16:9),你可以使用一个固定的纵横比视图,比如 this AspectRatioImageView which would always use the same height based on the width of the column (set by your GridView). Another, more complicated, option is to switch to RecyclerView and use a StaggeredGridLayoutManager,这样你就可以保持每张图片的纵横比并错开行,确保每个图像填充 space 并保持其纵横比。