DPI和PPI是两个不同的概念。LZ算的是PPI
ppi (pixels per inch):图像的采样率(在图像中,每英寸所包含的像素数目)
dpi (dots per inch):打印分辨率 (每英寸所能打印的点数,即打印精度)
ppi和dpi确实是两个概念,但是有些事情是约定成俗的,的ppi无法反映这张能在冲印店得到的冲印质量,不如你去店里试试看,你问问 *** 作员你的是72ppi会得到什么样的冲印质量,多数 *** 作员会一头雾水。在冲印店里只用dpi,因为我们拿去的必定是为了输出成照片,对于 *** 作人员,他要知道的就是你的像素和你所需要印制的尺寸,这两个要素构成了dpi,所以尽管不规范,对于需要冲印的我们只有用dpi的大小来沟通。
在Android中,关于屏幕的宽度、高度等的信息都封装在DisplayMetrics 类中,获取 DisplayMetrics 的方法以下几种:
不需要用到 context 的:
第一种:
DisplayMetrics metrics = new DisplayMetrics();
WindowManager manager = (WindowManager) contextgetSystemService(ServiceWINDOW_SERVICE);
if (manager != null) {
managergetDefaultDisplay()getMetrics(metrics);
}
需要用到 context 的:
第二种:
DisplayMetrics metrics = contextgetResources()getDisplayMetrics();
第三种:
DisplayMetrics metrics = new DisplayMetrics();
contextgetDisplay()getMetrics(metrics);
第四种:与第三种的方式类似,通过ApplicationContext获取。
DisplayMetrics metrics = new DisplayMetrics();
contextgetApplicationContext()getDisplay()getMetrics(metrics);
拿到DisplayMetrics之后,就可以访问里面的属性了:
// 屏幕的逻辑密度,是密度无关像素(dip)的缩放因子,160dpi是系统屏幕显示的基线,1dip = 1px, 所以,在160dpi的屏幕上,density = 1, 而在一个120dpi屏幕上 density = 075。
float density = metricsdensity;
// 屏幕的绝对宽度(像素)
int screenWidth = metricswidthPixels;
// 屏幕的绝对高度(像素)
int screenHeight = metricsheightPixels;
// 屏幕上字体显示的缩放因子,一般与density值相同,除非在程序运行中,用户根据喜好调整了显示字体的大小时,会有微小的增加。
float scaledDensity = metricsscaledDensity;
// X轴方向上屏幕每英寸的物理像素数。
float xdpi = metricsxdpi;
// Y轴方向上屏幕每英寸的物理像素数。
float ydpi = metricsydpi;
// 每英寸的像素点数,屏幕密度的另一种表示。densityDpi = density 160
float desityDpi = metricsdensityDpi;
获取PPI:
function js_getDPI() {
var arrDPI = new Array;
if (windowscreendeviceXDPI) {
arrDPI[0] = windowscreendeviceXDPI;
arrDPI[1] = windowscreendeviceYDPI;
}
else {
var tmpNode = documentcreateElement("DIV");
tmpNodestylecssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden";
documentbodyappendChild(tmpNode);
arrDPI[0] = parseInt(tmpNodeoffsetWidth);
arrDPI[1] = parseInt(tmpNodeoffsetHeight);
tmpNodeparentNoderemoveChild(tmpNode);
}
return arrDPI;
}
windowonload=function(){
alert("当前屏幕PPI "+js_getDPI());
}
以上就是关于安卓手机DPI是如何计算的安卓开发中有什么方法可以获得手机屏幕尺寸(英寸)全部的内容,包括:安卓手机DPI是如何计算的安卓开发中有什么方法可以获得手机屏幕尺寸(英寸)、如何获取触摸屏某个区域内的dpi个数、如何用javascript 来获取客户端 屏幕的dpi 值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)