2012-12-25 46 views
7

我正在开发Android Widget,需要区分Galaxy SGalaxy S2。 我几乎读了关于屏幕尺寸和密度文章的一切。 我当然需要使用新的限定符和新的限定符最小宽度。 我的问题是,sw320dp限定符匹配Galaxy S和Galaxy S2。 但我需要Galaxy S2的另一种布局,但无法找到正确的限定符。Galaxy S和Galaxy S2的最小宽度

银河S,密度233

屏幕尺寸中的像素的定义:480像素x 800像素以dp

屏幕尺寸:329dp X 549dp(原因1DP = 1像素/(密度/ 160)

- >所以预选赛sw320dp必须在这里匹配,并且是它

银河S II,密度218

屏幕尺寸中的像素的定义:480像素x 800像素以dp

屏幕尺寸:352dp X 587dp(原因1DP = 1像素/(密度/ 160)

- >所以预选赛sw340dp在这里必须匹配,但NO它不

(泰斯特d在模拟器和真实设备上)

drawables不是问题,但我的布局,特别是高度和文本大小在这些设备上是不同的,所以我真的需要一个特定的布局。

任何人有想法或更多的经验吗?

+1

AFAIK,框架不使用实际的密度,但“四舍五入”到最近的120,160,240,320像素,对应于低,中,高和X高。所以你的设备都会报告sw = 320。这可能会导致不规则的结果 - 我也有这个在Galaxy设备上的问题 – CjS

+0

是的,这是令人兴奋的我的经验,以及....但即使在模拟器,我们不能做真正的设备设置? – user1013443

+1

这与模拟器没有任何关系。这是该框架的一个特点。您在实际设备 – CjS

回答

5

屏幕密度,如由参考材料限定为:

屏幕的物理区域内的像素的数量;通常称为dpi(每英寸点数)。例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内具有更少的像素。 为了简单起见,Android将所有实际屏幕密度分为四种广义密度:低,中,高和超高。

低= 120DPI 值= 160dpi 高= 240dpi XHI = 320dpi

所以银河SII,用218真密度,被分配的240 以dp “高” 密度计算。因此dp屏幕的宽度为480/240 * 160 = 320。

这很糟糕,我同意。但它是如何工作的。

http://developer.android.com/guide/practices/screens_support.html

+0

我的理解已经是什么Android ...但 以及...事实是,我无法模仿一个​​真正的三星Galaxy SII或SIII,最常用的Android手机......这很糟糕,真是令我惊讶.. – user1013443

+1

我想什么你错过的是即使是真正的Galaxy SII也会有320dp的sw,而不是340.所以你正在模拟真实的设备 – CjS

+0

事实是:模拟一个真实的设备是不可能的。只有当设备的密集度与low,med,high或xdpi中的任何一个完全匹配时。 或者如何设置Galaxay手机的模拟器?我尝试了一切。真正的设备看起来非常不同。 – user1013443