2012-06-14 39 views
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,因此它不适合第一个屏幕。我对吗?

在此先感谢

+0

_dp_中的图像大小与_wrap_content_ –

+0

相同 - 我不明白,这里有什么关系?我可以根据自己的需要设置任意大小的dp,但我认为在我的问题中仍会遇到问题。 – Mayank

回答

2

几乎任何它试图以填补组位整个窗口而不愿为裁剪,缩放或留下未覆盖区域的Android应用是注定要失败的。有了这么多不同的长宽比和屏幕尺寸,就不可能神奇般地适应一组固定长宽比和尺寸的内容。即使您提供了另一种处理不同尺寸屏幕的布局,但并不能真正解决问题,因为毫无疑问,屏幕尺寸与您所涉及的两种屏幕尺寸不同的第三种设备在那里。

请考虑使用一组图像,其中包含可以在不失真度的情况下伸展或裁剪的部分。这可能只是一种纯色,渐变,重复模式或其他可能的东西。或者,如果合适,您可以只允许滚动。所有这些都取决于你的内容以及你想要达到的目标。

+0

谢谢。我的应用程序是一个游戏,滚动不是一个选项。我的主要游戏面板是一组正方形,所以我将不得不以编程方式对其进行缩放,以使方块不会变形。 但是,像按钮等资产,有没有办法强制所有的位图适合在屏幕上,或将不得不以编程方式完成? – Mayank

+0

当然。你的按钮等不会填满整个屏幕。只需将它们放置在相对于边缘或相对于游戏区域边界的位置。 'RelativeLayout'可能在这里很有用。再次,很难给你更多的更多细节。 – kabuko

1

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

编辑:

对不起,犯了很大的错误。图像完全符合ImageView其中一方。

相关问题