0

我在这里问了这个问题,我试图用 Glide 将宽幅和长幅图像加载到 aGridView中,并希望像 Picasso 那样更均匀地加载这些不同大小的图像,同时尽可能保持纵横比。我得到的答案是 s 的一个长期存在的问题,GridView并尝试了 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 的调整大小调用)?我认为它必须等待测量视图,但它仍然比毕加索更快。谁能提供更好的东西?

4

2 回答 2

0

对于小于蜂窝的 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();
    }
于 2015-10-01T11:41:18.403 回答
0

您可以使用getDisplayMetrics()

getActivity().getResources().getDisplayMetrics().widthPixels;
于 2015-10-01T12:51:08.993 回答