2012-03-02 71 views
0

我在Samsung S I9000上遇到问题。我的应用上的按钮比他们应该大得多。另外,系统选择res/values-small /作为值的来源。总而言之,它的表现就好像该设备的屏幕很小,尽管它应该是800x480(我在横向模式下工作)。事实上,我可以通过将res/values-small/styles.xml中的值更改为比我已经使用的更小的字体来改善情况。Android三星S I9000屏幕尺寸和密度问题

显示指标如下:

density = 2.0 
scaledDensity = 2.0 
densityDpi = 320 
widthPixels = 800 
heightPixels = 480 
xdpi = 320.0 
ydpi = 320.0 

任何人都可以解释为什么该设备结垢我的图形了这么多,作为如果我有一个非常小的显示器?更重要的是,我该如何解决它?

我试过调整我的清单,将minSdk和targetSdk设置为最近的版本,但是没有任何效果。删除值 - 小/导致应用程序使用默认值/来代替,这只会使情况变得更糟。

+0

我不认为有一个值小的文件夹。你也可以使用values-large和values-xlarge。什么是你的Android操作系统版本? – 2012-03-02 07:53:29

+0

有一个值小的。请参阅http://www.efalk.org/SamsungS.tar.gz以获取包含它的源代码,并在任何小屏幕设备上演示它,显然也是三星S。我相信它自1.6以来一直受到支持。请参阅http://developer.android.com/guide/practices/screens_support.html – 2012-03-06 14:53:54

+0

底线:我确信这是三星S中的一个错误 - 当它真的是233时,它将像素密度报告为320.这会导致所有图形当它真的应该是1.5倍时,将被放大2倍。它也会导致屏幕尺寸被计算为1.5“x 2.5”,如果这是真的,那么这将是一个小屏幕。没有人注意到三星S上的图标,菜单等真的很庞大?他们在模拟器上很大。 – 2012-03-06 15:00:45

回答

2

始终使用“SP”的字体和其余为“DP”

地方你在相应的文件夹,如下

图像假设你是在为MDPI使用36x36的图片,你需要使用

drawable-mdpi - 36 x 36 
drawable-hdpi - 48 x 48 
drawable-xhdpi 72 x 72 

3:4:6:8

在某些情况下,您可能不希望Android预先缩放资源。避免预缩放的最简单方法是使用nodpi配置限定符将资源放入资源目录中。

例如:

res/drawable-nodpi/icon.png 

例如

你作为器14sp意味着它会自动为320 DPI更改为

14×320÷160 =28 

所以现在你的字体使用的字体大小xhdpi分辨率手机的尺寸为28dp。

+0

谢谢。我用字体为sp;我认为它可以通过密度或scaledDensity进行缩放?这些都不能解释为什么系统从资源/价值中获取资源 - 小。或者是因为尽管具有高像素密度,该设备的屏幕非常小巧? – 2012-03-02 15:53:06

+0

将我的drawable移动到drawable中 - nodpi工作。谢谢。 – 2012-03-02 16:03:00