1

我有一个看起来像这样的布局:

 <LinearLayout>
     <ImageView>
     android:width="wrap_content"
     android:height:"wrap_content"
      ...
     </ImageView>

     <ImageView>
     android:width="wrap_content"
     android:height:"wrap_content"
      ...
     </ImageView>

     <ImageView>
     android:width="wrap_content"
     android:height:"wrap_content"
      ...
     </ImageView>

     <ImageView>
     android:width="wrap_content"
     android:height:"wrap_content"
      ...
     </ImageView>
 </LinearLayout>

图像的大小使得它们在 540x960、275ppi 的屏幕上填满屏幕。但是当我在模拟器上运行我的应用程序时,最后一张图像被压扁了。

阅读Supporting Multiple Screens文档后,我了解到在 dp 中指定图像尺寸而不是“wrap_content”应该涵盖不同密度的屏幕。

但是不同尺寸的屏幕呢?例如,如果我有两个具有相同像素密度的不同尺寸的屏幕,我可能会遇到这样一种情况,即我的图像适合其中一个屏幕而不适合另一个屏幕,对吗?有两种不同的布局是唯一的解决方案吗?

例如,两个不同大小(但密度相同)的屏幕可能有 100 和 200 个垂直像素可用,并且图像大小为 150dps,因此它不适合第一个屏幕。我对吗?

提前致谢

4

2 回答 2

2

几乎任何试图用设置的位图填充整个窗口而不愿意裁剪、缩放或留下未覆盖区域的 Android 应用程序都注定要失败。有这么多不同的纵横比和屏幕尺寸,不可能神奇地适应一组具有固定纵横比和尺寸的内容。即使您提供了另一种布局来处理不同尺寸的屏幕,但这并不能真正解决问题,因为毫无疑问,在某处存在第三台设备,其屏幕尺寸与您所涵盖的两者不同。

考虑使用一组图像,其中包含可以拉伸或裁剪而不会失去保真度的部分。这可能只是纯色、渐变、重复图案或其他东西。或者,如果合适,您可以只允许滚动。所有这些都取决于您的内容以及您想要实现的目标。

于 2012-06-14T17:23:06.613 回答
1

注意 中的android:scaleType属性ImageView。默认情况下,系统使用FIT_CENTER来自 的值缩放图像ImageView.ScaleType。在这种情况下,系统会保持图像的原始纵横比,并确保它完全适合设备的一侧,无论是宽度还是高度。

编辑:

对不起,犯了大错。图像完全适合ImageView它的一侧。

于 2012-06-14T17:27:48.843 回答