Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“中的混乱”;最小宽度dp“;在Android中_Android_Android Selector - Fatal编程技术网

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

“中的混乱”;最小宽度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

我正在学习如何使用“最小宽度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


更新解决了我的困惑。检查有问题的注释。

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

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));