图像查看一维以适应可用空间,第二个评估以保持纵横比

Posted

技术标签:

【中文标题】图像查看一维以适应可用空间,第二个评估以保持纵横比【英文标题】:ImageView one dimension to fit free space and second evaluate to keep aspect ration 【发布时间】:2011-09-06 07:36:48 【问题描述】:

对于 android <ImageView>,我需要类似<img width="100%" /> 的东西。我的意思是将宽度调整为所有可用空间(缩小或放大图像宽度)并自动更改高度以保持纵横比。

Something like <ImageView android:layout_width="match_parent" android:layout_height="auto">

使用android:scaleType="fitCenter"用图像做我想要的,但只用图像,不会改变视图本身的高度。当我将展位尺寸设置为 match_parent 时,我会得到我想要的,但前提是我在屏幕上只有一张图像。但我需要一些图片下的文字。

这是创建 ImageView 的子级的唯一方法吗? 例如android:adjustViewBounds="true"不为我做任何事情。

【问题讨论】:

【参考方案1】:

我发现问题出在哪里。 ImageView 的默认实现不能放大图像。如果图像大于屏幕宽度 android:adjustViewBounds="true" 正常工作并调整高度以保持图像的纵横比。但如果图像比屏幕宽度小,它就不会放大它。

这是这段代码造成的

if (newHeight <= heightSize) 
    heightSize = newHeight;
 

在 ImageView 类中(第 688 行,API 10)

我制作了 ImageView 的特殊子元素,它允许放大图像以适应宽度。

这里是:https://gist.github.com/tprochazka/5486822

【讨论】:

我正在使用您的代码,在列表视图中,带有通用图像加载器,我注意到,对于大图像,它会使用户界面停顿很多。任何想法如何提高效率? 我的修改是为了适应小图像以适应更大的 IamgeView 区域,例如,如果用户在平板电脑或屏幕密度更高的新设备上运行应用程序。如果你想在 ListView 中使用大图像,你应该缩小它以完全适合 ImageView 大小并将这个大小缓存在 LRU 磁盘缓存中。

以上是关于图像查看一维以适应可用空间,第二个评估以保持纵横比的主要内容,如果未能解决你的问题,请参考以下文章

缩放图像以适应可用空间,同时防止裁剪

jquery animate 使用方形矩形图像创建缩小效果以适应窗口宽度或高度并保持纵横比

AutoLayout约束以适应矩形内的视图,保持一定的纵横比(以编程方式)

PyQt 保持 QLabel 大小纵横比

使图像适应容器大小保持纵横比

如何在不破坏图像纵横比的情况下调整 QImage 或 QML 图像的大小以适应父容器