2

我正在使用 Fresco 库将图像和 gif 加载到我的应用程序中。我在 Fresco 中遇到的最大限制是必须设置布局的宽度和高度。所以我设置了我的简单drawee视图,如下所示:

 <com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/image"
            android:layout_marginTop="@dimen/feed_item_margin"
            android:scaleType="fitCenter"
            fresco:actualImageScaleType="fitStart"
            android:layout_below="@+id/content_header"
            android:layout_width="match_parent"
            android:layout_height="@dimen/texture_view_height"
            fresco:placeholderImage="@drawable/placeholder"
            />

我的问题是,如果图像高度大于宽度,则图像右侧有很多空白(见附件),但是高度很好

在此处输入图像描述

如果实际图像小于宽度(见附件),则可能会发生高度,因为固定高度为 250dp,因此图像下方有很多空白区域。

在此处输入图像描述

我已经通过 SimpleDrawerView 中的不同 scaleTypes 并且似乎没有一个可以显示我想要的方式。

我想知道有人对 Fresco 有很多经验吗?我已经开始使用它来加载 gif,因为我遇到了 Glide 的问题。

如果有人可以提供帮助,我将不胜感激。

仅供参考,这些图像是从服务器流式传输的,我无法控制图像

4

1 回答 1

7

我是 Fresco 库的作者之一,我可能会提供帮助。根据您的问题,我实际上并不知道您希望如何显示您的图像。

首先,我强烈建议您先阅读文档。你会发现android:scaleTypeFresco 完全忽略了它,你应该使用它fresco:actualImageScaleType

我的问题是,如果图像高度大于宽度,则图像右侧有很多空白(见附件),但是高度很好。

如果高度很好,应该如何填充额外的水平空间?这些是唯一可能的选择:

  • 裁剪图像(例如actualImageScaleType=centerCrop
  • 扭曲图像以填满所有空间 ( actualImageScaleType=fitXY)
  • 在图像的一侧或两侧有空白区域(例如actualImageScaleType=fitCenter)。

如果实际图像小于宽度(见附件),那么它可能会发生在高度的位置,所以这里因为固定高度是 250dp,所以图像下方有很多空白区域。

也许下面的内容会让你满意。设置布局参数如下:

android:layout_width="match_parent"
android:layout_height="wrap_content"
fresco:viewAspectRatio="1.33"
fresco:actualImageScaleType="fitCenter"

这将使drawee视图具有父视图的宽度,默认情况下宽高比为1.33(4:3)。然后,您可以按照我在另一个答案中的解释,以编程方式设置纵横比以匹配图像之一。这将使drawee视图高度根据图像动态调整。

于 2015-12-03T22:24:48.540 回答