Android中“最小宽度dp”的混乱

时间:2015-06-16 13:34:35

标签: android android-selector

我正在学习如何使用“最小宽度dp”在android中使用this来支持不同的屏幕。

我得到的是以下数字是dp中设备最小的一面。

  

屏幕宽度dp的典型数字为:

     

320:手机屏幕(240x320 ldpi,320x480 mdpi,480x800 hdpi等)。

     

480:像Streak(480x800 mdpi)这样的tweener平板电脑。

     

600:7“平板电脑(600x1024)。

     

720:10英寸平板电脑(720x1280,800x1280等)。

根据this帖子,nexus 6有730 x 410 dp。

  

Nexus 6拥有令人印象深刻的5.96英寸Quad高清屏幕显示屏   分辨率为2560 x 1440(493 ppi)。这转换为~730 x 410 dp   (密度无关的像素)。

但正如this

中所述
           dp = (px/dpi)*160
              = (1440/493)*160
              = ~467

那怎么会转换成730 x 410 dp? 当我在nexus 6中运行演示时,设备使用res / values-sw320dp / dimens.xml下定义的填充维度

这让我很困惑。如何使用“最小宽度dp”实际计算dp并相应地创建视图?

除res / values-sw320dp外,我有res / value和res / values-sw600dp,其下面有dimens.xml。

更新弄清楚了我的困惑。检查有问题的评论。

1 个答案:

答案 0 :(得分:3)

您可以使用以下代码获取正确的值:

DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics();
    float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
    float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
    Log.d("dpHeight-----",String.valueOf(dpHeight));
    Log.d("dpWidth------",String.valueOf(dpWidth));

例如,对于Xperia Z 1080x1920px,值 360 x592dp,设置为 values-sw360dp