安卓手机DPI是如何计算的安卓开发中有什么方法可以获得手机屏幕尺寸(英寸)

安卓手机DPI是如何计算的安卓开发中有什么方法可以获得手机屏幕尺寸(英寸),第1张

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 值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9741224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存