Android中不同Density下Pixel dip关系探究

网上看了很多帖子,到目前我也搞不到那个到底哪个是对的,所以实验探索,现在把结果贴出来,希望能够和大家讨论。

px与dp的转换公式:

第一种:1DP = 1PX * density   (http://blog.csdn.net/android_discover/article/details/6608466

第二种:1DP = 1PX  / density  (网上多见这种公式

重点看button3和button4

 <Button
           android:layout_width="100dp"
           android:layout_height="50dp"
           android:text="button3"/>
       <Button
           android:layout_width="100px"
           android:layout_height="50px"
           android:text="button4"
          android:layout_marginTop="20dp"/>

附图:

屏幕密度为1.0时1DP*1.0 = 1PX,所以button3和button4一样大;那么由此得出density=1.0的屏幕分辨率为800*480(px)时。他的密度无关分辨率为800*480(dp)

屏幕密度为1.5时,公式一算出的button3宽度为:150px;公式二算出的button3宽度为:66px;实际观察button3比button4长宽各放大了1.5倍,button3长度应该为150px。

那么由此得出density=1.5的屏幕分辨率为800*480(px)时,他的密度无关分辨率按照第一种公式为533*320(dp);第二种公式则为1200*720(dp)

有上面两个测试结果来看,好像第一中算法正确。

 

以上测试均是在模拟器中实验,真机测试设备不足 所以没有实际侧过,大家看到底那个公式真确?

猜你喜欢

转载自blog.csdn.net/qishandaxue/article/details/8564126