【发布时间】:2015-08-19 22:48:44
【问题描述】:
我在here 上提出了这个问题.我得到的答案是 GridViews 的一个长期存在的问题,并尝试了 Jake Wharton 的纵横比图像视图,我尝试过但没有成功。另一个建议是交错的RecyclerView,很好的答案,但有很多变化
所有这些的原因是我的图像太大,毕加索无法快速加载,用户抱怨它真的很慢,但是 Glide(看起来更快)将图像加载到那里的纵横比并弄乱了均匀性在我的网格中,您可以在链接中看到:长图像占用与 2 个宽图像相同的空间。无论如何,经过大量的试验和错误,我现在使用 Glide 是这样的:
int width = getActivity().getWindowManager().getDefaultDisplay().getWidth();
int myWidth = width / 2;
Glide.with(getActivity())
.load(mThumbIds[position])
.placeholder(R.drawable.placeholder)
.override(myWidth, myWidth)
.centerCrop()
.into(imageView)
;
我是 Android 新手,但这似乎完美无缺。我现在的问题是除了getWidth 被弃用之外,(该应用程序适用于 API 16+)这有什么问题吗(将屏幕宽度分割并将其传递给 Glide 的调整大小调用)?我认为它必须等待测量视图,但它仍然比毕加索更快。谁能提供更好的?
【问题讨论】:
-
Glide 在这种情况下不会等待布局,因为您使用
.override()这将是生成的位图的大小。 -
我认为你应该接受这些建议,交错的
RecyclerView和AspectImageView(或更通用的布局,如this)从长远来看会有所帮助。查询显示尺寸极易出错(不考虑边距、内边距、间距等);让 Android 布局系统完成它的工作;) -
你需要使用
display.getSize(size);
标签: android android-windowmanager android-glide