Google nexus 7从px转换为dp

我是平板电脑应用程序开发新手。 我有谷歌Nexus7与屏幕分辨率(600 * 960 dip)所以我想知道它是在mdip类别? 根据那1px = 1dp(基准)。 但如果我遵循这个在平板电脑上看起来不太好。 我正在为nexus7 -sw600dp创build单独的布局文件夹,并根据mdip提及大小,但不起作用。 我的图片也不好看。 我想知道什么是谷歌Nexus的实际转换率7.需要帮助。

Solutions Collecting From Web of "Google nexus 7从px转换为dp"

公式: pixels = dips * (density / 160)

Nexus 7是800×1280,其密度为213像素,这意味着它的分辨率代码是tvdpi (这意味着您可以有一个名为drawable-tvdpi的文件夹)。

您可以通过以下方式测量可用的屏幕大小,减去窗口装饰:

 this.getResources().getConfiguration().screenWidthDp; this.getResources().getConfiguration().screenHeightDp; 

在我的N7上,它返回600 dp w,888 dp h。 按照上面的公式,888 dp的高度是1280px – 窗饰。

Nexus7是一个独特的设备,具有一些奇怪的dpi结构。

对于nexus 7

 layout-large-hdpi 

这是一个非常好的解释(来自Google的Android工程师Dianne Hackborn ): Dianne Hackborn解释了Nexus7的独特分辨率

注意:只有当您没有给出更高的优先级限定符时,应用程序才会从这些文件夹中获取图像。 例如,如果你已经给布局文件夹,像布局sw360dp应用程序将只采取从这个文件夹中的图像,即使你已经给出了单独的布局,就像我上面所说的。 因为在android中有一个优先顺序,你必须给布局。

屏幕密度

通常被称为dpi(每英寸点数)。 Android将所有实际的屏幕密度分为四个一般密度:低(120),中(160),高(240)和超高(320)。 Galaxy Nexus等设备具有“超高”的屏幕密度(更具体地说,dpi值设置为320)。 Nexus 7使用“tvdpi” – 即213 dpi。

密度独立像素

通常被称为dp。 这是显示内容时使用的虚拟像素单位。 与密度无关的像素相当于160dpi屏幕上的一个物理像素。 要计算dp,请使用以下公式:

 px = dp * (dpi / 160) 

或等同地:

 dp = (px / dpi) * 160 

尽pipeNexus 7具有类似的分辨率,Nexus 7可以显示比Galaxy Nexus更多的内容: Nexus 7的dpi比Galaxy Nexus更低

Galaxy Nexus(320 dpi,720像素宽)

 (720 / 320) * 160 = 360 dp 

Nexus 7(213 dpi,800像素宽)

 (800 / 213) * 160 = 600 dp 

这意味着当应用程序在Galaxy Nexus上进行渲染时,屏幕的宽度实际上是360 dp(使用720像素渲染)。 而在Nexus 7上,屏幕宽度为600dp(以800像素渲染)。

尝试下面的代码,给像素值下面的方法,它会给你的结果在DP。

 public int convertSizeToDeviceDependent(int value) { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); return ((dm.densityDpi * value) / 160); }