可以说,如果Galaxy Tab屏幕分辨率(在纵向模式下)是600px屏幕宽度3.55inch,屏幕密度将是600/3.55 = 169 dpi.了解并记住设备独立像素(dp)的计算方式(http://developer.android.com/guide/practices/screens_support.html):
px = dp * (dpi / 160);
600 = dp * (169 / 160);
dip = 568
Run Code Online (Sandbox Code Playgroud)
因此,从位置0开始绘制一条568dp(设备无关像素)宽度的水平线必须与屏幕宽度完全匹配.但是如果你在设备上试试这个,你会发现屏幕宽度是400dp.我将再次使用相同的公式但是为了获得dpi:
600 = 400 * (dpi / 160);
dpi = 240
Run Code Online (Sandbox Code Playgroud)
所以具有240dpi,3.55inch屏幕宽度和600pixels,是否表示一个物理像素由多个"点",否则参数的对应的宽度852pixel (3.55*240).
我认为dpi表示每英寸点数,即每英寸像素数.但这似乎不是真的......
稍后添加:
此(http://developer.android.com/guide/topics/resources/more-resources.html#Dimension)说:
无论屏幕密度如何,160dp始终为1英寸
哪个不是真的.只需从中检查测量源: android尺寸:pt和dp之间的差异
甚至后来添加:
我问的原因是违反规则160dp = 1inch导致这样的事实,即当指定控制宽度为例如320dp时,它将覆盖Galaxy Tab更大的部分,这是真正必要的,并且比你期望的大得多600x1024px屏幕......
感谢BR STeN的澄清
我正在捕捉这样的orientationchange事件:
$(window).bind( 'orientationchange', function(e){
});
Run Code Online (Sandbox Code Playgroud)
如何获得新的屏幕宽度和高度(以像素为单位)orientationchage?
我已经尝试screen.width但是这没有改变,它仍然是初始宽度,即使在方向改变之后.