我正在学习如何使用“最小宽度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。
更新弄清楚了我的困惑。检查有问题的评论。
答案 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