Mar*_*eal 3 android gridview image picasso android-glide
我一直在使用Picasso的库在我的应用程序中将图像加载到我的gridview中,它的工作原理和我想要的完全一样.但是用户告诉我图像加载速度非常慢.我知道这是因为网络速度不佳而Picasso正在加载我的完整图像,这些图像非常大,然后调整它们以适合我的图像视图.所以我尝试使用滑动,它以几乎两倍的速度加载图像,但是在某些图像上它不像毕加索那样保持结构.例如毕加索加载图像看起来像
虽然滑行加载它们有不同的状态,这是它最初加载的
滚动后看起来像
然后最终经过大量滚动后看起来像
我非常有信心这是因为我的图像尺寸都不同而且似乎使我的占位符图像不同大小有效但我想知道的是我如何滑动以保持其初始状态,或者如何我能让毕加索加载得更快吗?我听说将颜色格式从888降低到565有戏剧性的效果,任何人都可以借给我两美分吗?感谢您提出的所有建议
编辑
这是我的imageview
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:id="@+id/imageView"/>
Run Code Online (Sandbox Code Playgroud)
这就是我给毕加索打电话的方式
Picasso.with(getActivity())
.load(mThumbIds[position])
.placeholder(R.drawable.placeholder)
.fit()
.into(imageView);
return imageView;
Run Code Online (Sandbox Code Playgroud)
这就是我现在称之为滑行的方式
Glide.with(getActivity())
.load(mThumbIds[position])
.asBitmap()
.placeholder(R.drawable.placeholder)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.fitCenter()
.error(R.drawable.ic_photos)
.into(imageView);
return imageView;
Run Code Online (Sandbox Code Playgroud)
如果重要,这是我的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"
>
Run Code Online (Sandbox Code Playgroud)
默认情况下,Glide将尝试保持图像的纵横比.使用时fitCenter(),这意味着您希望整个图像在可用区域内可见并居中.切换到centerCrop()确保图像填充其可用高度和宽度的第一步.
但是,您也遇到了一个长期存在的问题GridView:它假设所有列都具有相同的高度.然而,你使用wrap_content你ImageView的高度,导致每个元素根据传入的高度不同地调整大小(记住,从Glide的角度来看,你说你ImageView可以达到它需要的高度!).
如果您具有主导宽高比(例如,16:9),则可以使用固定宽高比视图,例如此AspectRatioImageView,它始终使用基于列宽度(由您设置GridView)的相同高度.另一个更复杂的选项是切换到RecyclerView并使用StaggeredGridLayoutManager,这将允许您保持每个图像的纵横比并错开行,确保每个图像填充空间并保持其纵横比.