【问题标题】:Setting up square image as background将方形图像设置为背景
【发布时间】:2021-12-03 22:18:56
【问题描述】:

我有方形图像,我需要将该图像设置为背景。但我需要该图像在纵向和横向模式下以不同方式呈现。

如图所示,横向和纵向都应应用相同的图像,但每个图像应显示图像的不同部分,并保持相同的轴心点。图像中的黑点代表枢轴点。

用相同的图像可以实现吗?我可以处理两个不同的图像。

用 svg 图片可以实现吗?

【问题讨论】:

  • 您是否使用 AndroidSVG 库来渲染实际的 SVG?还是你在使用 VectorDrawables?

标签: android android-image android-background androidsvg


【解决方案1】:

假设您实际上使用的是 SVG 图像作为图像...

你应该做的就是:

  1. 提供适当的viewBox
  2. 将 SVG 设置为 preserveAspectRatio="xMidYMid slice"。此设置等效于 CSS background-zise: cover

演示

svg:nth-child(1) {
  width: 300px;
  height: 150px;
}

svg:nth-child(2) {
  width: 150px;
  height: 300px;
}
<svg viewBox="0 0 300 300" preserveAspectRatio="xMidYMid slice">
  <image xlink:href="https://i.stack.imgur.com/iF2FB.png" width="300" height="300"/>
</svg>

<svg viewBox="0 0 300 300" preserveAspectRatio="xMidYMid slice">
  <image xlink:href="https://i.stack.imgur.com/iF2FB.png" width="300" height="300"/>
</svg>

【讨论】:

  • 感谢 Paul LeBeau 的回答。但是,我认为您的答案是针对网络的。我实际上问了 Android 的问题。
  • 我在上面问过您是否使用实际的 SVG。但是你没有回答。只要您使用支持 Android 的 SVG 渲染库,我的解决方案(使用 preserveAspectRation)就应该可以工作。我的 AndroidSVG 可以。
  • 设计师提供的 svg 文件。我需要将它作为矢量可绘制对象导入 Android Studio 中。你相信,我还有运气吗?
  • 好的。那么在那种情况下,没有。只需转换 SVG 并在 ImageView 上使用 scaleType="centerCrop"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2011-06-24
相关资源
最近更新 更多