【问题标题】:scaling/formatting multiple imagebutton array in Android在Android中缩放/格式化多个imagebutton数组
【发布时间】:2011-11-19 01:01:38
【问题描述】:

所以我的任务是创建一个水平滚动的图像按钮数组,这些按钮基本上是用户的照片头像。这些化身不受纵横比或大小的限制,因此我一直在尝试缩放和格式化它们的方法。我已经通过 scaletype="fitCenter" 并使用静态宽度和高度来缩放它们。但我真正希望他们做的是相互对抗。目前,如果图像比它高,你会得到一种信箱,但在侧面与顶部(空白区域)。我已经尝试了所有不同的缩放值,将每个图像映射包装在一个线性布局中,等等,但我没有尝试摆脱这些(同时显示整个图像进行缩放)。有没有办法做到这一点?

【问题讨论】:

  • 另外,对于宽于高的字体,还有顶部/底部的信箱。我的静态宽高是一样的。

标签: android xml image layout


【解决方案1】:

使用 scaleType fitXY,如果图像尺寸较小,它会将图像拉伸到您指定的布局参数,如果图像很大,它还会将图像缩小到您指定的布局参数。关键是要给 imageView 提一下图片布局参数,也就是图片的宽高。

【讨论】:

  • 好的,我试过 fitXY 但它不能正确缩放图像。问题是我正在为图像尺寸(或围绕它的线性布局)输入静态值。我想我的问题是,有没有办法在不增加左右空间的情况下缩放这些图像(对于肖像图片)或顶部和底部(用于横向图片),但事先不知道图像尺寸是多少?我们是否需要编写一些代码来查看图像属性,然后计算适当的宽度以确保比例正确?
  • 我认为您应该尝试为 imageView 分配静态值,根据文档,如果您希望图像在 x 和 y 中独立缩放,“fitXY”应该可以工作。检查这两个链接。 developer.android.com/reference/android/widget/… 使用此处描述的 FILL developer.android.com/reference/android/graphics/…
【解决方案2】:

重申一下我认为你在做什么,你有三个图像场景:

  1. 方形图片
  2. 风景图片(宽于高)
  3. 人像图片(高大于宽)

如果所有图像都是正方形或横向,则使用 FIT_CENTER 布置一排固定大小的 ImageView(或 ImageButton)非常适合您的需要,因为缩放将始终使图像拉伸到视图的水平边界(最大尺寸)。但是,对于纵向图像,缩放会导致视图位于固定大小视图的边界内,以便整个图像高度可见。

如果您需要保持图像的纵横比,确实没有 ScaleType 可以帮助解决此问题,因为逻辑将是循环的(使视图适合图像,同时使图像适合视图)。解决方案是调整每个 ImageView 的大小(特别是宽度)以匹配图像将被缩放到的大小。这是一个工厂方法的示例,您可以使用它来生成 ImageView 以适合您想要放入其中的图像。如果您愿意,您也可以稍微修改一下以重置现有 ImageView 的参数:

private ImageView getImageViewForThumbnail(Bitmap thumbnail) {
    float viewHeight = //Your chosen fixed view height
    float scale = ((float)thumbnail.getHeight()) / viewHeight;
    float viewWidth = thumbnail.getHeight() / scale;

    ImageView view = new ImageView(this);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int)viewWidth, (int)viewHeight);
    view.setLayoutParams(params);
    view.setScaleType(ScaleType.FIT_XY);
    view.setImageBitmap(thumbnail);

    return view;
}

您基本上只是在计算 ImageView 的宽高比应该与您为所有这些选择的固定高度相匹配。

HTH

【讨论】:

  • 谢谢,我担心这是唯一真正的方法。
猜你喜欢
  • 1970-01-01
  • 2020-05-15
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多