“中的混乱”;最小宽度dp“;在Android中
我正在学习如何使用“最小宽度dp”来支持android中使用的不同屏幕 我得到下面的数字是dp中设备的最小边 屏幕宽度dp的典型数字为: 320:电话屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi等) 480:像Streak(480x800 mdpi)一样的tweener平板电脑 600:7英寸平板电脑(600x1024) 720:10英寸平板电脑(720x1280、800x1280等) 根据post,nexus 6具有730 x 410 dp Nexus 6拥有一个令人印象深刻的5.96英寸四屏幕高清显示屏,每分钟一次 分辨率为2560 x 1440(493 ppi)。这转换为约730 x 410 dp (与密度无关的像素) 但正如在 那么这怎么会转化为730 x410dp呢? 此外,当我在Nexus6中运行演示时,设备正在使用res/values-sw320dp/dimens.xml下定义的填充维度 这使我困惑。如何实际计算dp并使用“最小宽度dp”相应地创建视图 除了res/values-sw320dp之外,我还有res/value和res/values-sw600dp,它们下面有dimens.xml“中的混乱”;最小宽度dp“;在Android中,android,android-selector,Android,Android Selector,我正在学习如何使用“最小宽度dp”来支持android中使用的不同屏幕 我得到下面的数字是dp中设备的最小边 屏幕宽度dp的典型数字为: 320:电话屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi等) 480:像Streak(480x800 mdpi)一样的tweener平板电脑 600:7英寸平板电脑(600x1024) 720:10英寸平板电脑(720x1280、800x1280等) 根据post,nexus 6具有730 x 410 dp Nexus 6
更新解决了我的困惑。检查有问题的注释。您可以使用以下代码获得正确的值:
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,值为360x592dp,设置为values-sw360dp检查。。。这可能有助于用户界面使用此。dp是通过量化密度而不是物理密度计算的。所以Nexus6的730x410 dp是正确的,而sw320dp部件混淆是我理解上的错误。之所以使用res/values-sw320dp,是因为定义的下一个bucket是res/values-sw600dp,它明显大于410(如果是nexus 6,则最小侧)。是的,这给出了正确的值。DisplayMetrics.density用于根据量化密度缩放资源。
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));