我是一名新手,涉及到平板应用程序开发。我使用的是分辨率为(600 * 960 dip)的Google Nexus7,那么我想知道它是否属于mdip类别?根据1px = 1dp(基线),但是如果我跟随这个方法,在平板上看起来并不好。我对Nexus 7创建了单独的布局文件夹-sw600dp
,并按照mdip指定大小,但是它不起作用。我的图片也不好看。我想知道Google Nexus 7的实际转换率是多少。需要帮助。
我是一名新手,涉及到平板应用程序开发。我使用的是分辨率为(600 * 960 dip)的Google Nexus7,那么我想知道它是否属于mdip类别?根据1px = 1dp(基线),但是如果我跟随这个方法,在平板上看起来并不好。我对Nexus 7创建了单独的布局文件夹-sw600dp
,并按照mdip指定大小,但是它不起作用。我的图片也不好看。我想知道Google Nexus 7的实际转换率是多少。需要帮助。
公式:像素 = 设备独立像素 * (设备像素密度 / 160)
Nexus 7 的分辨率为 800x1280,像素密度为 213 px,这意味着它的分辨率代码是 tvdpi
(这意味着您可以有一个名为drawable-tvdpi
的文件夹)。
您可以通过以下方法测量可用屏幕大小(减去窗口装饰):
this.getResources().getConfiguration().screenWidthDp;
this.getResources().getConfiguration().screenHeightDp;
在我的N7上,它返回600dp w,888dp h。根据上述公式,888dp高度为1280px-窗口装饰。
dp = (50 / 213) * 160
,对吗? - nilkashlayout-large-hdpi
这是一篇非常好的解释(来自谷歌Android工程师Dianne Hackborn):Dianne Hackborn解释了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
(720 / 320) * 160 = 360 dp
(800 / 213) * 160 = 600 dp
这意味着,当应用程序在Galaxy Nexus上渲染时,屏幕的宽度实际上是360 dp(使用720像素进行渲染)。而在Nexus 7上,屏幕的宽度为600 dp(使用800像素进行渲染)。
dp = (50 / 213) * 160
,对吗? - nilkash尝试以下代码,将像素值传递给下面的方法,它将以dp为单位返回结果。
public int convertSizeToDeviceDependent(int value) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return ((dm.densityDpi * value) / 160);
}