首页 文章

壁画图书馆问题

提问于
浏览
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"
            />

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

enter image description here

然后它可能发生在高度,如果实际图像小于宽度(见附件)所以这里因为固定高度是250dp在图像下面有很多白色空间 .

enter image description here

我已经浏览了SimpleDrawerView中的不同scaleTypes,似乎没有一个能够显示我想要的方式 .

我想知道有没有人有过Fresco的经验?我已经开始使用它来加载GIF了,因为我遇到了Glide问题 .

如果有人可以提供帮助,我会非常感激 .

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

1 回答

  • 6

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

    首先,我强烈建议您先阅读documentation . 您会发现Fresco完全忽略了 android:scaleType ,而您应该使用 fresco:actualImageScaleType .

    我的问题是如果图像高度大于宽度,图像右侧会留下大量的空白区域(见附件),但高度很好 .

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

    • 裁剪图像(例如 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视图高度根据图像动态调整 .

相关问题