我是平板电脑应用程序开发的新手。我有谷歌Nexus7屏幕分辨率(600 * 960倾角)所以我想知道它是否属于mdip类别?
根据1px = 1dp(基线)。但是,如果我遵循它,它在平板电脑上看起来不太好。我正在为nexus7 -sw600dp
创建单独的布局文件夹,并根据mdip提及大小,但它不起作用。我的照片也不好看。我想知道什么是google nexus 7的实际转换率。需要帮助。
答案 0 :(得分:13)
公式:pixels = dips * (density / 160)
Nexus 7是800x1280,密度为213像素,这意味着它的分辨率代码为tvdpi
(这意味着您可以拥有一个名为drawable-tvdpi
的文件夹。)
您可以使用以下方法测量可用的屏幕尺寸,减去窗口装饰:
this.getResources().getConfiguration().screenWidthDp;
this.getResources().getConfiguration().screenHeightDp;
在我的N7上,它返回600 dp w,888 dp h。按照上述公式,888 dp高度为1280px - 窗饰。
答案 1 :(得分:3)
Nexus7是一种独特的设备,具有一些奇怪的dpi结构。
对于nexus 7
layout-large-hdpi
以下是一个非常好的解释(来自Google的Android工程师Dianne Hackborn):Dianne Hackborn explains the unique resolution of the Nexus7
注意:只有在您没有提供更高的优先级限定符时,应用才能从这些文件夹中获取图像。例如,如果您给出了layout-sw360dp之类的布局文件夹,即使您已经提供了与我上面所述的单独布局,应用程序也只会采用此文件夹中的图像。因为在android中有一个优先顺序,你必须给出布局。
屏幕密度
通常称为dpi(每英寸点数)。 Android将所有实际屏幕密度分为四种通用密度:低(120),中(160),高(240)和超高(320)。诸如Galaxy Nexus之类的设备具有“超高”屏幕密度(更具体地,dpi值设置为320)。 Nexus 7使用“tvdpi” - 即213 dpi。
密度独立像素
通常称为dp。这是显示内容时使用的虚拟像素单位。与密度无关的像素相当于160 dpi屏幕上的一个物理像素。要计算dp,请使用以下公式:
px = dp * (dpi / 160)
或等效地:
dp = (px / dpi) * 160
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上,屏幕宽度为600 dp(使用800像素渲染)。
答案 2 :(得分:1)
尝试下面的代码,给下面的方法提供像素值,它会给你dp的结果。
public int convertSizeToDeviceDependent(int value) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return ((dm.densityDpi * value) / 160);
}