我使用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问题。
如果有人可以提供帮助,我会非常感激。
仅供参考这些图像是从服务器流式传输的,我无法控制图像
答案 0 :(得分:6)
我是Fresco图书馆的作者之一,我可以提供帮助。根据您的问题,我实际上并不知道您希望如何显示图像。
首先,我强烈建议您先阅读documentation。您会发现Fresco完全忽略了android:scaleType
,而您应该使用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)。 然后,您可以编程方式将宽高比设置为与我在另一个answer中解释的图像相匹配。这将使得drawee视图高度根据图像动态调整。