使填充 Glide 的网格更加结构化
Making grid filled with Glide more structured
我在 上问过这个问题 我正在尝试使用 Glide 将宽和长图像加载到 GridView
中,并希望像 Picasso 那样更均匀地加载这些不同大小的图像,同时保持纵横比尽可能大。我得到的答案是 GridView
s 的一个长期存在的问题,并尝试 Jake Wharton 的宽高比图像视图,我尝试过但没有成功。另一个建议是交错 RecyclerView
,很好的答案,但有很多变化
所有这一切的原因是我的图片太大以至于 Picasso 无法快速加载并且用户抱怨它真的很慢,但是 Glide(看起来更快)加载图片到那里的宽高比并且搞砸了我的网格的均匀性,您可以在 link 中看到:长图像采用与 2 个宽图像相同的 space。不管怎样,经过大量的试验和错误,我现在像这样使用 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 的调整大小调用)?我认为它必须等待测量视图,但它仍然比 Picasso 快。谁能提供更好的东西?
对于 api 低于蜂窝的情况,您可以使用您的方法,但对于 api 更高的情况,您需要使用 getSize()
方法。我为此使用以下代码
if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR2) {
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
} else {
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
}
您可以使用getDisplayMetrics()
getActivity().getResources().getDisplayMetrics().widthPixels;
我在 GridView
中,并希望像 Picasso 那样更均匀地加载这些不同大小的图像,同时保持纵横比尽可能大。我得到的答案是 GridView
s 的一个长期存在的问题,并尝试 Jake Wharton 的宽高比图像视图,我尝试过但没有成功。另一个建议是交错 RecyclerView
,很好的答案,但有很多变化
所有这一切的原因是我的图片太大以至于 Picasso 无法快速加载并且用户抱怨它真的很慢,但是 Glide(看起来更快)加载图片到那里的宽高比并且搞砸了我的网格的均匀性,您可以在 link 中看到:长图像采用与 2 个宽图像相同的 space。不管怎样,经过大量的试验和错误,我现在像这样使用 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 的调整大小调用)?我认为它必须等待测量视图,但它仍然比 Picasso 快。谁能提供更好的东西?
对于 api 低于蜂窝的情况,您可以使用您的方法,但对于 api 更高的情况,您需要使用 getSize()
方法。我为此使用以下代码
if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR2) {
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
} else {
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
}
您可以使用getDisplayMetrics()
getActivity().getResources().getDisplayMetrics().widthPixels;